在PHP中使用正则表达式匹配汉字长度

时间:2018-08-21 07:59:33

标签: php regex utf-8

我正在尝试在php中对名称标签进行输入检查,该名称标签由英语,中文和数字组成。

"/^[A-z0-9\p{Han}]{2,12}$/u";

我想实现12个字符的名称标签规则,其中汉字为2个单位,英文/数字为1个单位。

正则表达式可以匹配这样的规则吗?

举个例子:

六 matches because as of \p{Han} and 2 units
六1 matches because of 0-9, \p{Han}, and 3 units
1 does not match as of 1 unit
一二三四五六七 does not match as of 14 units

1 个答案:

答案 0 :(得分:0)

经过一番修补,我有一个解决方案

"/^([A-Za-z0-9]{2}|\p{Han})([A-Za-z0-9]{1,2}|\p{Han}){0,5}$/u";

第一部分([A-Za-z0-9]{2}|\p{Han})匹配2个单位,即1个汉字或2个Eng / Num。

立即性后跟([A-Za-z0-9]{1,2}|\p{Han}){0,5},它将0单位与5个汉字或10个Eng / Num字符匹配。总共12个单位。

感谢Should not use [A-z]