4

ドイツ向けのアプリケーションでは、いくつかのWebサービスを作成していますが、英数字、サポートされていない特殊文字など、ユーザー名、パスワードなどの検証ルールを適用する必要があります。これを実現するために正規表現を使用しましたが、失敗します。英語では問題なく動作しますが、ドイツ語はサポートされていません。この問題に対処するにはどうすればよいですか。

どんな助けでもありがたいです...preg_match("#.*^(?=.{8,20})(?=.*[a-zA-Z])(?=.*[0-9]).*$#", $string)

4

1 に答える 1

1

最初に、UTF-8 の 'u' 修飾子を使用します (このエンコーディングは、国際的なアプリケーションに使用する必要があります)。次に、[a-zA-Z] ブロック内でウムラウトなどを許可しようとしている場合は、次のようにエスケープ シーケンスを使用して必要な特定の文字を追加できます。

個別に:

preg_match( "/\x{00FC}/u" , 'ü' ); // 1

またはグループで:

preg_match('/^[\x{00DF}\x{00E4}\x{00C4}\x{00F6}\x{00D6}\x{00FC}\x{00DC}]+$/u', 'ßäÄöÖüÜ'); // 1

...または単語文字一致を使用するだけです\w(これにより、単語文字として機能する数字、アンダースコア、およびその他の国際文字も許可されることに注意してください)。

preg_match( "/\w/u" , 'ü' ); // 1

^( 「m」修飾子なしで、式の途中で何をしているのかわかりません。)

于 2012-09-22T09:29:17.497 に答える