在 ES9 中,RegExp 新增了一些字符类,这些字符类可以帮助我们更方便地匹配字符串。这些字符类包括 Unicode 属性、断言、具名组等。本文将详细介绍这些字符类的用法和示例。
Unicode 属性
Unicode 属性是一种用于描述字符的元数据。在 ES9 中,RegExp 新增了对 Unicode 属性的支持,可以使用 \p{}
来匹配具有特定 Unicode 属性的字符。
例如,\p{Letter}
表示任何 Unicode 字母字符,\p{Number}
表示任何 Unicode 数字字符。下面是一些常用的 Unicode 属性:
\p{Letter}
:任何 Unicode 字母字符。\p{Number}
:任何 Unicode 数字字符。\p{Punctuation}
:任何 Unicode 标点符号字符。\p{Symbol}
:任何 Unicode 符号字符。\p{Separator}
:任何 Unicode 分隔符字符。\p{White_Space}
:任何 Unicode 空白字符。
使用示例:
const regex = /\p{Letter}/u; console.log(regex.test('a')); // true console.log(regex.test('1')); // false console.log(regex.test('中')); // true
断言
断言是一种特殊的匹配模式,它只匹配特定位置的字符,而不会消耗字符。在 ES9 中,RegExp 新增了对断言的支持,可以使用 (?=)
和 (?!)
来表示正向断言和负向断言。
正向断言表示匹配后面紧跟着指定模式的字符,而不消耗这些字符。例如,/\d(?=px)/
表示匹配后面紧跟着 px
的数字字符。
负向断言表示匹配后面不紧跟着指定模式的字符,而不消耗这些字符。例如,/\d(?!px)/
表示匹配后面不紧跟着 px
的数字字符。
使用示例:
const regex1 = /\d(?=px)/; console.log(regex1.test('123px')); // true console.log(regex1.test('123')); // false const regex2 = /\d(?!px)/; console.log(regex2.test('123px')); // false console.log(regex2.test('123')); // true
具名组
具名组是一种给正则表达式中的子表达式命名的方式。在 ES9 中,RegExp 新增了对具名组的支持,可以使用 (?<name>)
来给子表达式命名。
使用示例:
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; const match = regex.exec('2022-10-01'); console.log(match.groups.year); // 2022 console.log(match.groups.month); // 10 console.log(match.groups.day); // 01
总结
ES9 中新增的字符类可以帮助我们更方便地匹配字符串。其中,Unicode 属性可以帮助我们匹配具有特定 Unicode 属性的字符;断言可以帮助我们匹配特定位置的字符;具名组可以帮助我们命名子表达式。在实际开发中,我们应该根据具体需求选择合适的字符类来匹配字符串。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6586c96bd2f5e1655d1233b8