php preg_match返回意外的真实

Chr*_*ris 0 php regex

谁能向我解释为什么这会回来TRUE?还有7个z它应该返回,FALSE因为我在正则表达式中设置了最大限制为6.

preg_match('/z{4,6}/', "zzzzzzz")
Run Code Online (Sandbox Code Playgroud)

saw*_*awa 5

那是因为你的字符串包含一个4到6'z的子字符串.如果你希望匹配对整个字符串,你必须在你的正则表达式中加入锚点.

/^z{4,6}$/
Run Code Online (Sandbox Code Playgroud)

要么

/\Az{4,6}\z/
Run Code Online (Sandbox Code Playgroud)