阅读有关 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/

10-10 13:10