需要一个正则表达式,以便^ [a-zA-Z0-9] [.a-zA-Z0-9 _-] * $适用于所有语言

时间:2016-02-01 06:22:22

标签: regex

我需要一个能够在所有语言中匹配的正则表达式,如日语,韩语,西班牙语,法语,意大利语等。

表达式是我试图复制的是:

^[a-zA-Z0-9][.a-zA-Z0-9_-]*$

1 个答案:

答案 0 :(得分:0)

假设您正在使用PCRE(Perl / PHP / Python),请改为:

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

或者:

^[\p{L}\p{Nd}][\p{L}\p{Nd}._-]*$

这将匹配任何UTF-8字符串中的任何字母或数字。

现在,._-变得有点棘手!您可以按\p{P}匹配任何标点符号,但这将包含超过列出的三个字符。这些Unicode转义序列解释为herehere

正如@Amadan所提到的,这可以在Ruby中使用Oniguruma library,也可以在POSIX正则表达式引擎中使用:

/[[:alpha:][:digit:]][[:alpha:][:digit:]._-]*/

POSIX正则表达式使用bracket expressions而不是\转义序列。