2

私の現在の正規表現は/^[a-zA-Z]+( [a-zA-Z]+)*$/. 次のような名前で機能します。

John Smith

とにかく、サイトは国際的で、名前は次のようになります。

Jānis Bērziņš

āこれは有効な名前ですが、ēšcharsが原因で、正規表現は検証に失敗します。

1 つの方法は、許可されているすべての文字を入力することですが、そうするとリストが巨大になります。

私はそれを行うより簡単な方法を探しています。ホワイトリスト方式ではなく、ブラックリスト方式でしょうか?

アドバイスをありがとう!

4

2 に答える 2

6

適切な Unicode 文字 property(y/ies)を使用して、UTF-8 モードで正規表現を使用します。

于 2012-02-16T14:26:37.303 に答える
2

文字クラスを文字の unicode プロパティに置き換えるだけです\pL

/^\pL+( \pL+)*$/

Unicode プロパティの概要については、regular/expressions.info のこちらを参照してください。

writecodeonline.comでの私のテストでは、これは機能しています

$s = "Jānis Bērziņš";
preg_match("/^\\pL+( \\pL+)*$/", $s, $matches);
于 2012-02-16T14:33:09.333 に答える