阅读有关 Regexp(TuxRadar) 的 PHP 在线资源。
根据作者的说法,以下内容不应将“aaa1”与模式匹配,因此返回 false(0),但我得到 true(1)。
<?php
$str = "aaa1";
print preg_match("/[a-z]+[0-9]?[a-z]{1}/", $str);
?>
为什么?
Regular Expressions
最佳答案
你确定那里不应该有尾随 $
吗?没有它,返回 true 很有意义——第一个 [a-z]
块匹配前 2 个 a
字符,[0-9]
什么都不匹配,最后一个 [a-z]
匹配第三个 a
。尾随的 1
被忽略。
查看该书的链接,似乎确实存在错误:
仅当正则表达式使用 $
anchor 定到字符串的末尾时,这才是正确的。
关于php - 正则表达式返回真,但一本书的作者说它不应该,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10219262/