jquery ajax模块的一个正则表达式
rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
这个表达式是用于提取 url中的 protocol:host:port
几个知识点复习一下:
1. ^ 匹配一个输入或一行的开头, 例如/^a/匹配"an" 不匹配"An",
如果设置了Multiline属性,^也匹配“\n”或“\r”之后的位置
^
出现在中括号时,匹配未包含其之后的任意字符,例如[^xyz]表示不匹配xyz
2. 分组
分为捕获性分组和非捕获性分组,捕获分组会存储匹配的内容,以便下次使用,
非捕获性分组不存储匹配的内容,以(?:...)表示
3. [\w.+-] protocol 包含
字母数字,.+-这几类字符,并且是以字母开头,参考URI
.+都是特殊字符,为什么不转义呢?[\w\.\+-]
奇怪的是chrome下面测试[\w.+-]和[\w\.\+-]是等价的?
4. | 选择符,rurl中选择符的使用有点奇怪,
/x|/ 的意思是匹配x或者空字符串
var cc = /(x)|()/ -> ["", undefined, ""];