$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);
復制代碼代碼如下:
<?php
$shouji ="哈哈哈哈";
if (!preg_match("/^[/x80-/xff]{6,30}$/",$shouji)){
echo "nonono";
}
else {
echo "yesyesyes";
}
?>