在 ES9(ECMAScript 2018)中,正则表达式引擎新增了一种特殊的转义序列,称为 Unicode Property Escapes。这种转义序列可以用来匹配 Unicode 中的字符属性,从而使正则表达式更加强大和灵活。
什么是 Unicode Property Escapes
在正则表达式中,我们可以使用字符集(character set)来匹配一组字符,例如 [abc]
可以匹配字符 a、b 和 c 中的任意一个。而 Unicode Property Escapes 则可以更加精细地匹配字符属性,例如匹配所有汉字、所有数字等等。
Unicode Property Escapes 的语法为 \p{...}
,其中 ...
是属性名称。例如,\p{Han}
表示匹配所有汉字,\p{Digit}
表示匹配所有数字,\p{Letter}
表示匹配所有字母等等。属性名称的完整列表可以在 Unicode 官网 上找到。
此外,还可以使用 \P{...}
来匹配不具有某个属性的字符。例如,\P{Han}
表示匹配所有非汉字字符。
如何使用 Unicode Property Escapes
Unicode Property Escapes 可以在正则表达式中任何位置使用,例如字符集中、量词后面、替换字符串中等等。下面是一些示例代码:
// javascriptcn.com 代码示例 // 匹配所有汉字 const re1 = /[\p{Han}]+/u; console.log(re1.test('你好,世界')); // true // 匹配所有数字 const re2 = /\p{Digit}+/u; console.log(re2.test('123')); // true // 匹配所有非汉字字符 const re3 = /\P{Han}+/u; console.log(re3.test('hello, world!')); // true // 替换所有汉字为 * const str = '你好,世界'; const newStr = str.replace(/[\p{Han}]/ug, '*'); console.log(newStr); // **,**
需要注意的是,由于 Unicode Property Escapes 是 ES9 新增的特性,因此需要在正则表达式中加上 u
标志才能使用。否则会抛出语法错误。
总结
Unicode Property Escapes 是一种强大的正则表达式特性,可以匹配 Unicode 中的字符属性。它可以帮助我们更加精细地匹配字符,使正则表达式更加灵活和强大。在实际开发中,我们可以根据需要使用不同的属性名称,来匹配各种不同的字符属性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657e89ccd2f5e1655d96065c