- new
var re = new RegExp('test','gi');
var re = /test/gi;
- function
test();//bool
exec();//string 一次匹配并返回
match();//array 多次匹配并返回
search();//类似indexOf()
replace();//替换
split();//分割
- 有用的预定义类
. [^\n\r]//不包含换行的任何字符
\d [0-9]
\D [^0-9]
\s [\t\n\x0B\f\r]//空字符,换行符
\S [^\t\n\x0B\f\r]//非空,非换行
\w [a-zA-Z0-9]
\W [^a-zA-Z0-9]
- 量词
? {0,1}
* {0,}
+ {1,}
{n} 一定出现n次
{n,m} 至少出现n次,但不超过m次
{n,} 至少出现n次
- 贪婪: "{m,n}", "{m,}", "?", "*", "+"
(d)(\w+) "\w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"
(d)(\w+)(d) "\w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "\w+" 也能够匹配上最后一个 "d", 但 是为了使整个表达式匹配成功,"\w+" 可以 "让出" 它本来能够匹配的最后一个 "d"
- 懒惰: "{m,n}?", "{m,}?", "??", "*?", "+?"
(d)(\w+?) "\w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"\w+?" 只匹配了一个 "x"
(d)(\w+?)(d) 为了让整个表达式匹配成功,"\w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"\w+?" 匹配 "xxx"
- 分组
var test = '([1-2])([a-z])';test.replace(reg,function(r0,r1){
console.log(r1);//可用r0,r1进行任意操作
console.log(RegExp.$1);//等价r1
});