php limit正则表达式与括号匹配不';行不通
尝试上面的代码时,函数对大于64的字符串返回true。 这里怎么了php limit正则表达式与括号匹配不';行不通,php,regex,Php,Regex,尝试上面的代码时,函数对大于64的字符串返回true。 这里怎么了 return preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str); 它仅在找到字符串时返回,您必须填写第三个参数($matches)并返回它。我不确定您的表达式有什么问题(我可以用ascii字符重现),但这是可行的 preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1
return preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str);
它仅在找到字符串时返回,您必须填写第三个参数(
$matches
)并返回它。我不确定您的表达式有什么问题(我可以用ascii字符重现),但这是可行的
preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str, $matches);
return $matches;
移除末端长度的检查
在开头添加(?=.{1,64}$)
。这是一个积极的前瞻,只检查整个字符串是否在1到64个字符之间。如果是,则检查模式,如果不是,则结果为False
在()中使用*表示字符串可以大于64。。{1,64}量词引用圆括号中的整个表达式,它不必是1个字符。这个正则表达式试图找到什么?一个字符串,在希伯来语中至少有一个字符,前面有数字,后面有数字。基本上混合了希伯来语和数字为什么不在检查strlen($str)<64之后用preg_匹配数字/希伯来语?(或者也许是穆·斯特伦)那不是OP想要的。@stema:不,他不会。你会看到他的反应
/^(?=.{1,64}$)([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*)$/