php - регулярное выражение - PCRE не поддерживает \ L, \ l, \ N, \ P, - PullRequest
28 голосов
/ 21 августа 2010

Мне нужно использовать следующее регулярное выражение для проверки некоторых азиатских символов

 $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

Спасибо

Ответы [ 2 ]

43 голосов
/ 21 августа 2010

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}

Не забудьте добавить модификатор u(/regex here/u), если вы имеете дело с UTF-8.Если вы имеете дело с другой многобайтовой кодировкой, вы должны сначала преобразовать в UTF-8.

0 голосов
/ 10 сентября 2018
'/^[<\x{4e00}-\x{9fa5}>]+$/u';

Попробуйте это. Вышеуказанное регулярное выражение не поддерживается PHP ,, но Javascript поддерживает это выражение.

...