

例子:将var str = "aabb"替换为"bbaa"
1. var reg = /(w)1(w)2/g;
console.log(str.replace(reg,"$2$2$1$1"));
输出结果为:"bbaa"
2. var reg = /(w)1(w)2/g;
console.log(str.replace(reg, function ($, $1, $2) {
return $2 + $2 + $1 + $1;
}));
输出结果为:"bbaa"
其中$为正则表达式全局,$1为第一个自变量 "(w)1",$2代表第二个自变量"(w)2";
例子:the-first-name 变为小头峰模式(theFirstName);


其中$为正则表达式全局,$1为第一个自变量 "-(w)"
正向预查(正向断言):在正则中只参与限定不参与选择
1.在正则表达式中查看 var str = "abaaaa"中身后带b的字符串,但输出时不显示b字符;
var str = "abaaaa";
var reg = /a(? = b)/g; //表示a后面跟着b但b参与选择只参与限定
2. 在正则表达式中查看 var str = "abaaaa"中身后不带b的字符串;
var reg = /a(? !b)/g; //表示查找a后没有b字符的字符串;
非贪婪匹配:正则表达式中默认贪婪匹配,但我们可以通过方法将贪婪匹配变为非贪婪匹配。在任何量词后加?
reg = /n{1,}/ ; //这时n的个数在1~无穷大之间,而在贪婪匹配的作用下,取值个数会尽可能变大;
reg = /n(1,)?/ ; //在n(1,)后加入?,这时正则匹配,取值会以最小个数为基准;
2. 正则表达式中的一些高级规则
2.1 匹配次数中的贪婪与非贪婪
在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}", "{m,}", "?", "*", "+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本 "dxxxdxxxd",举例如下:
|
表达式 |
匹配结果 |
| (d)(w+) | "w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd" |
| (d)(w+)(d) | "w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,"w+" 可以 "让出" 它本来能够匹配的最后一个 "d" |
由此可见,"w+" 在匹配的时候,总是尽可能多的匹配符合它规则的字符。虽然第二个举例中,它没有匹配最后一个 "d",但那也是为了让整个表达式能够匹配成功。同理,带 "*" 和 "{m,n}" 的表达式都是尽可能地多匹配,带 "?" 的表达式在可匹配可不匹配的时候,也是尽可能的 "要匹配"。这 种匹配原则就叫作 "贪婪" 模式 。









