0

顧客名を検証する正規表現を作成したいと思います。

これは、Peter、André、Mary-Anne、Van Rensberg のような名前になります。アジア系の文字は、このような名前に関係のない他の文字とともに許可されるべきではありません。

これは、HTML5 パターン属性を介して検証され、最後の手段として PHP を介して検証されます。

私はもともとこれから始めました。[^\p{L}\s0-9]{1,120}これは、私が考えていたことにほとんど当てはまりますが、私が達成しようとしていることとは正確には関係ありません。

基本的に、c、é、- などの文字は許可されますが、スペースは許可されず、副作用として / や % などの他の特殊文字の入力が許可されます。

このテーマに関する私の知識は非常に限られているため、私よりも多くのことを知っている人から知識を得るために、この質問をすることにしました。

この点に関してフィードバックをお寄せいただきありがとうございます。

4

2 に答える 2

3

あなたはから始めるべきです:

/^([\p{Letter}\p{Latin}]+(\-[\p{Letter}\p{Latin}]+|[\x20\xA0\x{0020}\x{00A0}])?)+$/

必要に応じて、次のような他のスクリプトを追加できます。

\p{Hebrew} \p{Cyrillic} \p{Georgian} \p{Greek}など

詳細については、「Unicode 正規表現」を参照してください。

regex validation の前に先頭/末尾の空白文字を削除することをお勧めします

于 2012-06-25T13:07:13.303 に答える
1

名前が名前であるかどうかを検証する場合は、その名前がスペースのみの無効な文字列でも、長さが非常に短い文字列でもないかどうかを検証する必要があります。正規表現で名前を検証することを期待している場合は、おそらくこれでうまくいくはずです

/(^|\s)[A-Za-z\-áéíóúÁÉÍÓÚ]+($|\s)/i

しかし、私はあなたができるより良いことは、名前が無効な文字列でないことを確認することであると主張します。なぜなら、多くの形の名前と名前がたくさんあるからです。

于 2012-06-25T13:24:09.480 に答える