return preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str);
尝试上面的代码时,函数会返回true到大于64的字符串。 这有什么不对?
答案 0 :(得分:0)
preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str, $matches);
return $matches;
仅在找到字符串时返回,您必须填写第三个参数($matches
)并将其返回。
答案 1 :(得分:0)
我不确定你的表达方式有什么问题(我可以用ascii字符重现它),但这是有效的
/^(?=.{1,64}$)([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*)$/
删除末尾的长度检查。
在开头添加(?=.{1,64}$)
。这是一个积极的展望,只是检查整个字符串是否在1到64个字符之间。如果是,则检查模式,如果结果不是False
。