2012-01-19 8 views
9

簡単な問題:既存のプロジェクトでは、カスタム入力フォームをサポートするために、追加のフィールドを追加することができます。新しいフォームを追加する必要がありますが、このプロジェクトの仕組みを変更することはできません。このフォームでは、訪問者が自分の名字とイニシャルを入力することができます。したがって、RegEx ^[a-zA-Z.]*$は今のところうまく機能しました。
誰かが入力として分音文字を受け入れないことに気づいた。 Ömürのようなトルコの名前は有効ではありません。しかし、それは受け入れられる必要があります。 正規表現による発音区別の確認

  1. が完全にチェックを外し、ユーザーがごみを入力できるようになります。

    は、だから私は2つのオプションがあります。

  2. 発音記号は含まれていますが、数字、スペース、またはその他の非文字は含まれていない正規表現を作成します。

私はプロジェクトのコードを変更することができないので、私はこれらの2つのオプションしか持っていません。私はオプション2を好むだろうが、現在適切な正規表現がどんなものであるべきか疑問に思う。 (。プロジェクトはC#4.0で書かれている)

+0

文字列「42 79」に正式に名前の書式を変更した人はどうしますか?何人かの人はそのような愚かなものをする... –

+0

"42 79"という名前の人は "Fourtytw Zeventynine"と入力されます。 :-)さらに、すべての国が市民をこの馬鹿にすることを許しているわけではありません。 :-) –

+1

私の名前が "42 79"で、誰かが "Fourtytw Zeventynine"としてポオキシDBに入れた場合、私は彼らのDBを_formally_不正確に変更するよう要求します。さらに多くの人々は、アイルランド人の姓のアポストロフィーを持つ複数の姓の家族名(大文字と小文字を区別するのは簡単かもしれないし、そうでないかもしれない)と家族名を持っている。名前を確認するのは難しいです。 –

答えて

21

あなたは手紙のために特定のUnicodeエスケープを使用することができます - \p{L}(これはA-Za-z範囲が含まれます):

^[.\p{L}]*$ 

regularexpressions.infoで見る:

\ p {L}または\ p {Letter}

"letter"というプロパティを持つ単一のUnicodeコードポイントに一致します。プロパティの完全なリストについては、チュートリアルの「Unicode Character Properties」を参照してください。各Unicodeコードポイントには1つのプロパティしかありません。文字クラス内で使用できます。

+1

文字クラスに '\ p {L}'を追加すると、 'a-zA-Z'を削除できます。 – stema

+0

@stema - 良いキャッチ。回答が更新されました。 – Oded

+0

ニースの解決策!問題が解決しました。 –

関連する問題