const REGEX = /a/y; // 指定从2号位置开始匹配 REGEX.lastIndex = 2; // 不是粘连,匹配失败 REGEX.exec('xaya') // null // 指定从3号位置开始匹配 REGEX.lastIndex = 3; // 3号位置是粘连,匹配成功 const match = REGEX.exec('xaxa'); match.index // 3 REGEX.lastIndex // 4
y修饰符同样遵守lastIndex属性,但是要求必须在lastIndex指定的位置发现匹配。
进一步说,y修饰符号隐含了头部匹配的标志^。
/b/y.exec('aba') // null
单单一个y修饰符对match方法,只能返回第一个匹配,必须与g修饰符联用,才能返回所有匹配。
5. sticky属性
表示是否设置了y修饰符
var r = /hello\d/y; r.sticky // true
6. flags属性
ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符。(和前面是一个逆向的过程)
7. RegExp.escape()
字符串必须转义,才能作为正则模式。已经有提议将这个需求标准化,作为RegExp对象的静态方法RegExp.escape()
function escapeRegExp(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); } let str = '/path/to/resource.html?search=query'; escapeRegExp(str) // "\/path\/to\/resource\.html\?search=query"
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《ECMAScript6(ES6)入门教程》、《JavaScript正则表达式技巧大全》、《JavaScript字符与字符串操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》