6

我目前正在编写一些验证输入数据的验证。我正在使用正则表达式来执行此操作,并使用 C#。

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

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

以上在拉丁字母上工作得很好,但是我怎样才能将其扩展到使用西里尔字母呢?

4

3 回答 3

9

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

问题是,没有“The”西里尔字母之类的东西:字母表因语言而略有不同。如果您想涵盖俄语版本的西里尔字母,请使用[А-Яа-я]. 你会使用不同的范围,比如塞尔维亚语,因为他们西里尔文的最后一个字母是Ш, not Я

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

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

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

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

In your case maybe "not a whitespace" would be enough: @"[^\s]+" or maybe "word character (which includes numbers and underscores) - @"\w+".

于 2013-02-16T02:37:04.973 回答
1
Password = @"(?!^[0-9]*$)(?!^[А-Яа-я]*$)^([А-Яа-я0-9]{6,18})$"

Validate Alpha Numeric = [^а-яА-Я0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿{0}]
于 2013-02-16T02:22:34.783 回答