preg_match /u 验证中文时要增加/U 中文中{1,2}即1或是2个汉字

preg_match /u
2011-04-29 13:02
Warning:preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 3

错误提示:

<b>Warning</b>:  preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 3 in <b>D:XXX.php</b> on line <b>25</b><br />

错误原因:

  preg_match("/^[\u4e00-\u9fa5]{1,4}$/",$str);

在使用上述代码匹配汉字时,出现如题错误。

测试1:

  preg_match("/^[\u4e00-\u9fa5]{1,4}/",$str);

去掉结尾的“$”,错误依旧。

测试2:

preg_match("/^[\x4e00-\x9fa5]{1,4}/",$str);

将u改为“x”,错误消失,但是匹配失败。

测试3:

preg_match("/^[\x{4e00}-\x{9fa5}]{1,4}/",$str);

加上大括号,错误提示:

<b>Warning</b>:  preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Compilation failed: character value in \x{...} sequence is too large at offset 9 in <b>D:XXX.php</b> on line <b>25</b><br />

测试4:

preg_match("/^[\x{4e00}-\x{9fa5}]{1,4}/u",$str);

加入参数u,错误消失,匹配正确。

要使用正则表达式验证输入是否为2汉字,可以使用以下代码: ```php <?php function validateChineseCharacters($input) { // 正则表达式:匹配2汉字 $pattern = '/^[\x{4e00}-\x{9fa5}]{2}$/u'; return preg_match($pattern, $input); } $input = '你好'; if (validateChineseCharacters($input)) { echo "输入是2汉字"; } else { echo "输入不是2汉字"; } ?> ``` 在这个示例中,`validateChineseCharacters` 函数接受一个参数 `$input`,表示要验证的输入。函数内部使用了正则表达式 `/^[\x{4e00}-\x{9fa5}]{2}$/u` 来匹配2汉字。`\x{4e00}-\x{9fa5}` 表示汉字的 Unicode 范围。 调用 `validateChineseCharacters` 函数来验证输入是否为2汉字,并根据返回结果打印相应的信息。 要使用正则表达式验证输入是否为6位数字和字符的组合,可以使用以下代码: ```php <?php function validateNumberAndCharacter($input) { // 正则表达式:匹配6位数字和字符的组合 $pattern = '/^[0-9a-zA-Z]{6}$/'; return preg_match($pattern, $input); } $input = 'abc123'; if (validateNumberAndCharacter($input)) { echo "输入是6位数字和字符的组合"; } else { echo "输入不是6位数字和字符的组合"; } ?> ``` 在这个示例中,`validateNumberAndCharacter` 函数接受一个参数 `$input`,表示要验证的输入。函数内部使用了正则表达式 `/^[0-9a-zA-Z]{6}$/` 来匹配6位数字和字符的组合。 调用 `validateNumberAndCharacter` 函数来验证输入是否为6位数字和字符的组合,并根据返回结果打印相应的信息。 请注意,这只是一种验证方法,你可以根据具体需求进行适当的修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值