正则表达式 p { L }和 p { N }

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

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

我知道 * 是什么意思,还有 | 是“或者”的意思。

但是我不知道 \p{L}\p{N}是什么意思。我在谷歌上搜索了它,没有结果..。

有人能帮帮我吗?

163151 次浏览

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

资料来源: Regular-expressions.info

如果你经常使用正则表达式,我建议你把这个网站加入书签,它非常有用。

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

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

[\p{L}\p{N}_.-]*