这个正则表达式 "\p{Lu}" 是什么意思?

31

我在C#中发现了这个正则表达式,现在我想将它移植到JavaScript中,但是我不理解以下内容:

[-.\p{Lu}\p{Ll}0-9]+

我觉得难理解的部分当然是\p{Lu}。我访问过的所有正则表达式网站都没有提到这个修改器。

有什么想法吗?


有什么想法?

4
请查看此链接右侧的描述。 - Avinash Raj
1
http://www.regular-expressions.info/unicode.html#category - Smern
1
总是有更多的网站!感谢regex101,它非常酷。以前从未见过这个网站。把它作为答案发出来吗?或者如果太明显了(但对我来说不是),我会删除这个问题。 - Mikaël Mayer
你可以使用\p{L}代替\p[Lu}\p{Ll} - Toto
对于C#/.Net正则表达式语法,请访问MSDN - 正则表达式语言和后续的字符类 - Alexei Levenkov
1个回答

35
这些被认为是Unicode属性。
Unicode 属性 \p{L} — 简写形式为 \p{Letter},将匹配任何语言中的任何字母。因此,\p{Lu} 将匹配具有小写变体的大写字母。相反,\p{Ll} 将匹配具有大写变体的小写字母。
简而言之,这将匹配任何具有变体的小写/大写字母,来自任何语言:
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz

3
请问您能否解释一下“具有小写变体的大写字母”?主要是指“小写变体”。 - Avinash Raj
2
这意味着在 Unicode 字母表中,一个字符可以有大小写两种形式,并且只匹配该字母的大写形式。这也意味着存在没有小写形式的大写字符。 - Reactgular
那么,\p{L}是否可能匹配一些给定正则表达式不匹配的字符?特别是那些没有大写或小写变体的字符? - Brian Reischl
想一想德语中的小写字母 ß。由于这个字母不能出现在单词的开头,所以它永远不会有大写变体。 - OnlineCop
1
@OnlineCop 如果你使用了\p{L},而不是自己维护一个硬编码列表,那就太好了,因为现在有一个大写的维基百科上有详细信息。 - luckydonald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接