允许非ASCII和外文字符的正则表达式?

4

是否可以创建一个正则表达式,允许使用非ASCII字母以及拉丁字母一起使用,例如中文或希腊符号(例如:A汉语AbN漢語)?

我目前拥有以下的正则表达式:^[\w\d][\w\d_\-\.\s]*$,它仅允许使用拉丁字母。


在正则表达式中使用中文字符:https://dev59.com/j2kw5IYBdhLWcg3w4emS - Eric Leschinski
我想要能够允许所有非拉丁字符。 - Farhad-Taran
你使用的是哪种编程语言/正则表达式?这是至关重要的信息。 - Tim Pietzcker
1
顺便提一下,\w 已经包含了 \d_,所以你不需要后者。 - Tim Pietzcker
所有非拉丁字符(除了拉丁字符)- 所以基本上,任何东西 - deceze
1个回答

6

在.NET中,

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

等同于您的正则表达式,另外还允许其他Unicode字母。

说明:

\p{L}是Unicode属性“Letter”的速记符号。

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

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

https://dev59.com/AnVC5IYBdhLWcg3weBE-#8933546


嗨,看起来它好像不能工作,只允许数字和下划线。它是依赖于.NET Framework版本吗? - Farhad-Taran
它正在从资源文件中检索,并插入到validationexpression="<%$ H:VT.DimensionNameNoneAscii %>"中。 - Farhad-Taran
哦,那是在浏览器端运行的吗?那么它只能使用ECMAScript正则表达式,而这些正则表达式不支持Unicode属性。 - Tim Pietzcker
那么,有没有一种使用EMACScript正则表达式获得相同功能的方法? - Farhad-Taran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接