ES9 严格模式下 RegExp 的重写标记 “y” 和 “u” 的使用方法

在 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


纠错
反馈