贪婪模式
"12345678" 正则: \d{3,6}
贪婪模式:会尽可能多的匹配,直到匹配失败
例如:'12345678'.replace(/\d{3,6}/g,'X');
结果:"X78"
非贪婪模式
"12345678" 正则: \d{3,6}
非贪婪模式:让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试
方法:在量词后面加上?即可
例如:'12345678'.match(/\d{3,6}?/g);
结果:["123","456","789"]
例如:'12345678'.replace(/\d{3,6}?/g,'X');
结果:"XX78"
分组
如果我们想匹配字符串Byron连续出现3次的场景
可能会用到 Byron{3}
但实际与我们的预期不符合。
使用()可以达到分组的功能,使量词作用于分组 (Byron){3}
例如:'a1b2c3d4'.replace(/([a-z]\d){3}/g,'X');
结果:"Xd4"
或
使用 | 可以达到或的效果
Byron|Casper
反向引用
例如:2016-11-6=>11/6/2016
代码:'2016-11-6'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1');
结果:11/6/2016
忽略分组
不希望捕获某些分组,只需要在分组内加上?:就可以
如:(?:Byron).(ok)
只有ok被视为一个分组,记为$1