西里尔字母的正则表达式?

时间:2013-02-16 02:17:23

标签: c# regex latin

我目前正在编写一些验证输入数据的验证。我使用正则表达式来处理C#。

Password = @"(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,18})$"

Validate Alpha Numeric = [^a-zA-Z0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿{0}]

上述拉丁字母表的工作正常,但我怎样才能将其扩展为使用西里尔字母?

3 个答案:

答案 0 :(得分:8)

使用正则表达式覆盖字符范围的基本方法是构造[A-Za-z]形式的表达式,其中A是范围的第一个字母,Z是范围的最后一个字母。

问题是,没有“西里尔字母”这样的东西:字母表根据语言略有不同。如果您想要涵盖俄语版的西里尔文,请使用[А-Яа-я]。你可以使用不同的范围,例如塞尔维亚语,因为西里尔字母的最后一个字母是Ш,而不是Я

另一种方法是逐个列出所有字符。只需找到要放在正则表达式中的字母的权威参考,并将其中的所有字符放入一对方括号中:

[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя]

答案 1 :(得分:7)

如果您需要允许特定语言或特定类型的字符,则可以使用character classes

@"\p{IsCyrillic}+" // Cyrillic letters
@"[\p{Ll}\p{Lt}]+" // any upper/lower case letters in any language

在你的情况下,也许"不是空白"就足够了:@"[^\s]+"或者可能是"字符(包括数字和下划线) - @"\w+"

答案 2 :(得分:1)

Password = @"(?!^[0-9]*$)(?!^[А-Яа-я]*$)^([А-Яа-я0-9]{6,18})$"

Validate Alpha Numeric = [^а-яА-Я0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿{0}]