return preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str);当尝试上面的代码时,该函数对大于64的字符串返回true。这里出了什么问题?
发布于 2011-07-25 13:47:13
我不确定您的表达式有什么问题(我可以用ascii字符重现它),但这是有效的。
/^(?=.{1,64}$)([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*)$/取消对末尾长度的检查。
在开头添加(?=.{1,64}$)。这是一个积极的展望,它只检查整个字符串的长度是否在1到64个字符之间。如果是,则检查模式,如果不是,则结果为False。
See here on Regexr
发布于 2011-07-25 05:12:16
preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str, $matches);
return $matches;它只在找到字符串时返回,您必须填充第三个参数($matches)并返回它。
https://stackoverflow.com/questions/6809755
复制相似问题