2

ヨーロッパ名の正規表現を探しています。私はこれを見つけました、javascriptでうまく動作します:

/^([ \u00c0-\u01ffa-zA-Z'\-])+$/

PHP用に変換しましたが、動作しません:

/^([ \x{00C0}-\x{01FF}a-zA-Z'\-])+$/

私の正規表現は次のような名前と一致する必要があります:

ジャン=ポール・ル・マルシャン

ジェローム・ラクティベ

つまり、文字 a-zA-Z、@#$%^© などの特殊文字はありませんが、éèàôç などのすべてのアクセント付き/ヨーロッパ文字。

4

3 に答える 3

5

これらのエスケープシーケンスを機能させるには、Unicodeモードをアクティブにする必要があります。

/^([ \x{00C0}-\x{01FF}a-zA-Z'\-])+$/u

括弧は必要ないことに注意してください。

/^[ \x{00C0}-\x{01FF}a-zA-Z'\-]+$/u

文字クラスは、数量詞を使用してすぐに繰り返すことができる正規表現の単一の「要素」を提供します。

于 2012-11-27T15:26:06.737 に答える
0

必ずutf8エンコーディングを使用uしてから、正規表現で修飾子を叩きます。

$regex = '/^([ \x{00C0}-\x{01FF}a-zA-Z\'\-])+$/u';
于 2012-11-27T15:26:35.310 に答える
0

この PHP 正規表現は機能するはずです。

$str = "Jérôme L'activé";
if (preg_match("/^[\s\x{00C0}-\x{01FF}a-z'-]+$/iu", $str, $match))
   print_r($match);

出力:

Array
(
    [0] => Jérôme L'activé
)

正規表現フラグ

  • u - マッチングで Unicode を有効にする
  • i - 大文字と小文字の比較を無視

PS:-角かっこ内でハイフンが最初または最後にある場合は、ハイフンをエスケープする必要はありません。

于 2012-11-27T15:29:11.310 に答える