私は現在、入力されたデータを検証するいくつかの検証を書いています。私は正規表現を使用して、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" キリル文字のようなものがないことです: アルファベットは言語によってわずかに異なります。キリル文字のロシア語版をカバーしたい場合は、 を使用して[А-Яа-я]
ください。たとえば、セルビア語の場合、キリル文字の最後の文字はШ
ではなくであるため、別の範囲を使用しЯ
ます。
もう 1 つの方法は、すべての文字を 1 つずつリストすることです。正規表現に入れたいアルファベットの信頼できる参照を見つけて、そのすべての文字を角括弧のペアに入れるだけです。
[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя]
特定の言語または特定の種類の文字を許可する必要がある場合は、文字クラスを使用できます。
@"\p{IsCyrillic}+" // Cyrillic letters
@"[\p{Ll}\p{Lt}]+" // any upper/lower case letters in any language
あなたの場合、「空白ではない」で十分@"[^\s]+"
かもしれません: または、「単語文字 (数字とアンダースコアを含む) - @"\w+"
.
Password = @"(?!^[0-9]*$)(?!^[А-Яа-я]*$)^([А-Яа-я0-9]{6,18})$"
Validate Alpha Numeric = [^а-яА-Я0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿{0}]