20

文字や数字だけでなく、「á」や「é」などの「特殊な」文字も入力できるようにしたいのですが、記号を使わないようにしたいと思います。 「!」、「@」、「%」など。

これを達成するために正規表現を書く方法はありますか?(できれば、それぞれの特殊文字を指定せずに。)

今私が持っています:

$reg = '/^[\w\-]*$/';
4

3 に答える 3

41

Unicode文字プロパティを使用して、文字を説明できます。

/^[\p{L}-]*$/u

\p{L}Unicode文字のクラスについて説明します。

于 2010-01-25T16:43:19.553 に答える
5

「単語文字」と見なされる文字は、ロケールによって異なります。これらの文字が自然なアルファベットで含まれるロケールを設定し/u、次のように正規表現の修飾子を使用する必要があります。

$str = 'perché';
setlocale(LC_ALL, 'it_IT@euro');
echo preg_match('#^\w+$#u', $str);
于 2010-01-25T16:42:01.617 に答える
4

この正規表現で試すことができます:

$reg = '~[^\\pL\d]+~u';

アクセントのあるキャラクターもキャッチ

于 2010-01-25T16:42:46.747 に答える