正则表达式和多个书写系统

时间:2009-09-09 07:28:55

标签: regex

书写系统的类型:

  • 字母
  • Abjad
  • Abugida
  • Logography

在正则表达式中,我们需要告诉我们要验证哪些“字符”:

我们使用类似a-zA-Z0-9之类的东西来表示我们接受所有的字母数字。

我们如何制作能够验证其他书写系统非字母数字的正则表达式? (我怎样才能制作出能够验证中文,印度文,希腊文或俄文或其他文字的正则表达式?

更新:

使用ASP.NET正则表达式引擎。

如果你不介意,你能给我一些例子吗?

由于

2 个答案:

答案 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是十进制数字等等..