156

我是正则表达式的新手,并获得了以下正则表达式:

(\p{L}|\p{N}|_|-|\.)*

我知道 * 是什么意思和 | 表示“或”,而 \ 转义。

但我不知道什么\p{L}\p{N}意味着什么。我用谷歌搜索了它,没有结果......

有人能帮我吗?

4

2 回答 2

221

\p{L}匹配“字母”类别中的单个代码点。
\p{N}匹配任何脚本中的任何类型的数字字符。

来源:正则表达式.info

如果您要经常使用正则表达式,我建议您为该站点添加书签,这非常有用。

于 2013-02-15T09:03:31.813 回答
42

这些是 Unicode 属性快捷方式(\p{L}用于 Unicode 字母,\p{N}用于 Unicode 数字)。.NET、Perl、Java、PCRE、XML、XPath、JGSoft、Ruby(1.9 及更高版本)和 PHP(自 5.1.0 起)支持它们

无论如何,这是一个非常奇怪的正则表达式。当字符类就足够时,您不应该使用交替:

[\p{L}\p{N}_.-]*
于 2013-02-15T09:06:16.313 回答