在 ES9 中,RegExp 类型新增了两个重写标记,“y” 和 “u”,它们都需要在严格模式下使用。这两个标记的引入,使得 JavaScript 正则表达式的功能更加强大和灵活,本文将介绍这两个标记的使用方法。
y 标记
“y” 标记代表“粘附模式”,它可以使得正则表达式从字符串的当前位置开始匹配。相比之下,“g” 标记是从字符串的起始位置开始匹配的。
使用方法
在正则表达式结尾添加 “y” 标记即可启用“粘附模式”。
const str = 'hello world' const regex = /o/y console.log(regex.exec(str)) // null console.log(regex.exec(str)) // { 0: 'o', index: 4, input: 'hello world', groups: undefined }
在上面的例子中,由于字符串 “hello world” 中没有以 “o” 开头的字符,所以第一次执行 regex.exec(str)
返回 null。第二次执行时,正则表达式从字符串的第五个字符 “o” 开始匹配,成功返回结果。
适用场景
“粘附模式”主要适用于需要从字符串的指定位置开始匹配的场景,例如:
- 搜索引擎输入框中的实时搜索提示
- 代码编辑器中的代码补全提示
u 标记
“u” 标记代表“Unicode 模式”,它可以启用完整的 Unicode 匹配。
使用方法
在正则表达式结尾添加 “u” 标记即可启用“Unicode 模式”。
const str = '𝒳' const regex = /\w/u console.log(regex.test(str)) // true
在上面的例子中,由于字符 “𝒳” 是 Unicode 字符,如果没有使用 “u” 标记,则正则表达式无法匹配。使用 “u” 标记后,正则表达式可以正确匹配。
适用场景
“Unicode 模式”主要适用于处理 Unicode 字符的场景,例如:
- 处理 Emoji 表情符号
- 处理多语言文本的排序和搜索
总结
“y” 和 “u” 标记的引入,使得 JavaScript 正则表达式的功能更加强大和灵活。在实际开发中,我们可以根据具体的需求选择使用不同的标记,以达到最佳的匹配效果。
以上就是本文介绍的关于 ES9 严格模式下 RegExp 的重写标记 “y” 和 “u” 的使用方法,希望对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658a7d7deb4cecbf2dfaef59