是否可以创建一个正则表达式,允许使用非ASCII字母以及拉丁字母一起使用,例如中文或希腊符号(例如:A汉语AbN漢語)?
我目前拥有以下的正则表达式:^[\w\d][\w\d_\-\.\s]*$
,它仅允许使用拉丁字母。
在.NET中,
^[\p{L}\d_][\p{L}\d_.\s-]*$
等同于您的正则表达式,另外还允许其他Unicode字母。
说明:
\p{L}
是Unicode属性“Letter”的速记符号。
注意:我认为您不想将下划线作为初始字符(仅在第二个字符类中存在)。由于\w
包括下划线,因此您的正则表达式确实允许它。您可能希望从我的解决方案中删除它的第一个字符类(当然,\p{L}
中没有包括它)。
在ECMAScript中,事情并不那么容易。您需要定义自己的Unicode字符范围。幸运的是,一位 StackOverflow 用户已经主动设计了一个JavaScript正则表达式转换器:
\w
已经包含了\d
和_
,所以你不需要后者。 - Tim Pietzcker