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" キリル文字のようなものがないことです: アルファベットは言語によってわずかに異なります。キリル文字のロシア語版をカバーしたい場合は、 を使用して[А-Яа-я]ください。たとえば、セルビア語の場合、キリル文字の最後の文字はШではなくであるため、別の範囲を使用しЯます。

もう 1 つの方法は、すべての文字を 1 つずつリストすることです。正規表現に入れたいアルファベットの信頼できる参照を見つけて、そのすべての文字を角括弧のペアに入れるだけです。

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

特定の言語または特定の種類の文字を許可する必要がある場合は、文字クラスを使用できます。

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

あなたの場合、「空白ではない」で十分@"[^\s]+"かもしれません: または、「単語文字 (数字とアンダースコアを含む) - @"\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 に答える