2011-03-24 43 views
0

任何人都可以向我解释为什么这是返回TRUE?有7个Z,但它应该返回FALSE,因为我已经在正则表达式中设置了最大值6。php preg_match返回意想不到的真

preg_match('/z{4,6}/', "zzzzzzz") 

回答

5

这是因为你的字符串包含一个4到6'z的子串。如果你想要对整个字符串进行匹配,你必须在你的正则表达式中加入锚。

/^z{4,6}$/ 

/\Az{4,6}\z/ 
+1

@克里斯:澄清一下,^和$分别开始和结束字符串(或换行,如果使用调节剂,但事情让事情复杂化)。所以这里的正则表达式是“字符串的开始,接下来是4到6个字符,然后是字符串的结尾” – 2011-03-24 02:05:31

+0

啊,这是完全合理的,谢谢你们。 – Chris 2011-03-24 02:11:14