正则表达式允许非ascii和外国字母?

时间:2012-10-25 13:03:34

标签: c# .net regex

是否可以创建正则表达式以允许非ascii字母和拉丁字母,例如中文或希腊符号(例如,允许A汉语AbN汉语)?

我目前有以下^[\w\d][\w\d_\-\.\s]*$,只允许使用拉丁字母。

1 个答案:

答案 0 :(得分:5)

在.NET中,

^[\p{L}\d_][\p{L}\d_.\s-]*$

相当于你的正则表达式,另外还允许使用其他Unicode字母。

<强>解释

\p{L}是Unicode属性“Letter”的简写。

警告:我认为你想不允许下划线作为初始字符(仅在第二个字符类中存在)​​。由于\w包含下划线,因此您的正则表达式确实允许它。您可能希望将其从我的解决方案中的第一个字符类中删除(当然,包含在\p{L}中)。

在ECMAScript中,事情并不那么容易。您必须定义自己的Unicode字符范围。幸运的是,一位StackOverflow用户已经出现并设计了一个JavaScript正则表达式转换器:

https://stackoverflow.com/a/8933546/20670