php - 正则表达式 - PCRE不支持\ L,\ l,\ N,\ P,

时间:2010-08-21 17:11:47

标签: php regex pcre

我需要使用以下正则表达式来验证一些亚洲字符

 $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 个答案:

答案 0 :(得分:42)

PCRE不支持\uXXXX语法。请改用\x{XXXX}。请参阅here

您的\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。

答案 1 :(得分:0)

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

尝试这个。您上面发布的正则表达式不受PHP的支持,但是Javascript确实支持该表达式。