书写系统的类型:
在正则表达式中,我们需要告诉我们要验证哪些“字符”:
我们使用类似a-zA-Z0-9之类的东西来表示我们接受所有的字母数字。
我们如何制作能够验证其他书写系统非字母数字的正则表达式? (我怎样才能制作出能够验证中文,印度文,希腊文或俄文或其他文字的正则表达式?
更新:
使用ASP.NET正则表达式引擎。
如果你不介意,你能给我一些例子吗?
由于
答案 0 :(得分:2)
你使用什么正则表达式引擎?如果您使用的是Java或.NET,则可以使用许多不同的unicode类别,例如\p{InGreek}
。
另一个可能更通用的解决方案是使用 unicode范围。此page包含几个众所周知的unicode范围的列表。例如,如果要匹配藏文字符,可以使用[\u0F00-\u0FFF]
。如果您想匹配藏文字符和英文字符,可以使用[A-Za-z\u0F00-\u0FFF]
,等等。
如果您想匹配多种语言,可以使用我提到的页面查找语言的unicode范围,然后将它们组合起来。例如,unicode范围[\u0370-\u06FF]
涵盖希腊语,西里尔语(用于俄语和其他斯拉夫语),希伯来语和阿拉伯语。如果您需要更多,只需添加所需的范围,直到涵盖所有语言。
编辑:根据您的评论,您只需使用以下表达式:
@"\p{L}{4,10}"
\p{L}
或 \p{Letter}
用于匹配任何语言的字母,因此,上述表达式匹配来自任何语言的4到10个字母。
答案 1 :(得分:0)
+1给@JG 您还可以使用预定义的charset类。如果未指定ECMAScript选项,则将\ w视为任何单词字符 - 对于unicode是“医生订购的”。相同的\ d是十进制数字等等..