web-dev-qa-db-ja.com

php-正規表現-PCREは\ L、\ l、\ N、\ P、をサポートしていません

いくつかのアジアの文字を検証するには、次の正規表現を使用する必要があります

 $regexp = "/^[\-'\u2e80-\u9fff\sa-zA-Z.]+$/"; // with warning

 $regexp = "/^[\-'\sa-zA-Z.]+$/";   // without warning

preg_match()[function.preg-match]:コンパイルに失敗しました:PCREは\ L、\ l、\ N、\ P、\ p、\ U、\ u、または\ Xをサポートしていません。

\u2e80-\u9fffからアジアの文字を検証できるように正規表現パターンを変更する方法を知っていますか。

最新のXAMPPを使用しています

Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_Perl/2.0.4 Perl/v5.10.1

ありがとうございました

29
q0987

PCREは\uXXXX構文をサポートしていません。代わりに\x{XXXX}を使用してください。 ここ を参照してください。

\u2e80-\u9fffの範囲も同等です

\p{InCJK_Radicals_Supplement}\p{InKangxi_Radicals}\p{InIdeographic_Description_Characters}\p{InCJK_Symbols_and_Punctuation}\p{InHiragana}\p{InKatakana}\p{InBopomofo}\p{InHangul_Compatibility_Jamo}\p{InKanbun}\p{InBopomofo_Extended}\p{InKatakana_Phonetic_Extensions}\p{InEnclosed_CJK_Letters_and_Months}\p{InCJK_Compatibility}\p{InCJK_Unified_Ideographs_Extension_A}\p{InYijing_Hexagram_Symbols}\p{InCJK_Unified_Ideographs}

UTF-8を扱っている場合は、u修飾子(/regex here/u)を追加することを忘れないでください。別のマルチバイトエンコーディングを扱っている場合は、最初に convert UTF-8に変換する必要があります。

42
Artefacto
'/^[<\x{4e00}-\x{9fa5}>]+$/u';

これを試してください。上記で投稿した正規表現はPHPでサポートされていませんが、Javascriptはその表現をサポートしています。

0
user10339927