str = '中華人民共和國123456789abcdefg';
echo preg_match("/^[\u4e00-\u9fa5_a-zA-Z0-9]{3,15}",strName);
運行一下上面這段代碼,看會有什麼提示信息?
Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in F:\wwwroot\php\test.php on line 2
原來,PHP正則表達式中不支持下列 Perl 轉義序列:\L, \l, \N, \P, \p, \U, \u, or \X
在 UTF-8 模式下,允許用“\x{...}”,花括號中的內容是表示十六進制數字的字符串。原來的十六進制轉義序列 \xhh 如果其值大於 127 的話則匹配了一個雙字節 UTF-8 字符。
所以,可以這樣來解決preg_match("/^[\x80-\xff_a-zA-Z0-9]{3,15}",strName);