Sizzle中恐怖的正则.
字面量的正则也许还好理解,那么由字符串编译而成的正则呢.
由字符'\\\\'编译而成的正则是/\\/,第一个\转义第两个\,所以其匹配一个\字符(这个\字符是代表字符本身)
Test_Script
var
s =
'\\'
;
alert(s);
// '\'
var
rs =
'\\\\'
;
var
matches = s.match(
new
RegExp(rs));
alert(matches[0])
// '\'
由字符串'\\3'编译而成的正则呢,这个代表的是\3,\3即引用第三个分组的捕获内容,所以下面这个例子匹配abcc
Test_Script
var
s =
'abcc'
;
var
rs =
'((ab)(c))\\3'
;
var
matches = s.match(
new
RegExp(rs));
alert(matches[0])
//abcc