上面代码中,\p{Script=Greek}指定匹配一个希腊文字母,所以匹配π成功。

    Unicode 属性类要指定属性名和属性值。

    1. \p{UnicodePropertyName=UnicodePropertyValue}

    \P{…}\p{…}的反向匹配,即匹配不满足条件的字符。

    注意,这两种类只对 Unicode 有效,所以使用的时候一定要加上u修饰符。如果不加u修饰符,正则表达式使用和\P会报错,ECMAScript 预留了这两个类。

    1. const regex = /^\p{Decimal_Number}+$/u;
    2. regex.test('𝟏𝟐𝟑𝟜𝟝𝟞𝟩𝟪𝟫𝟬𝟭𝟮𝟯𝟺𝟻𝟼') // true

    上面代码中,属性类指定匹配所有十进制字符,可以看到各种字型的十进制字符都会匹配成功。

    \p{Number}甚至能匹配罗马数字。

    1. // 匹配所有空格
    2. \p{White_Space}
    3. // 匹配各种文字的所有字母,等同于 Unicode 版的 \w
    4. // 匹配各种文字的所有非字母的字符,等同于 Unicode 版的 \W
    5. [^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]
    6. // 匹配 Emoji
    7. /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu
    8. // 匹配所有的箭头字符