我目前正在编写一些验证输入数据的验证。我正在使用正则表达式来执行此操作,并使用 C#。
Password = @"(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,18})$"
Validate Alpha Numeric = [^a-zA-Z0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿{0}]
以上在拉丁字母上工作得很好,但是我怎样才能将其扩展到使用西里尔字母呢?
使用正则表达式覆盖字符范围的基本方法是构造一个形式为 的表达式[A-Za-z]
,其中A
是范围的第一个字母,是范围Z
的最后一个字母。
问题是,没有“The”西里尔字母之类的东西:字母表因语言而略有不同。如果您想涵盖俄语版本的西里尔字母,请使用[А-Яа-я]
. 你会使用不同的范围,比如塞尔维亚语,因为他们西里尔文的最后一个字母是Ш
, not Я
。
另一种方法是逐个列出所有字符。只需找到要放入正则表达式的字母表的权威参考,并将其所有字符放入一对方括号中:
[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя]
如果您需要允许特定语言或特定类型的字符,您可以使用字符类:
@"\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+"
.
Password = @"(?!^[0-9]*$)(?!^[А-Яа-я]*$)^([А-Яа-я0-9]{6,18})$"
Validate Alpha Numeric = [^а-яА-Я0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿{0}]