给定字符串和正则表达式,如何确保它与整个字符串匹配?也就是说,我不想让换行符触发匹配结束 - 我希望它匹配到字符串的最后一端。
示例:
<?php
// simplified date pattern
$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/";
$d = "2014-01-05\n"; // OOPS - this will match
if(preg_match($pattern, $d)) {
echo "This is a date string.";
}
答案 0 :(得分:4)
使用D
modifier:
D(PCRE_DOLLAR_ENDONLY)
如果设置了此修饰符,则模式中的美元元字符仅匹配主题字符串的末尾。如果没有此修饰符,如果它是换行符(但不在任何其他换行符之前),则美元也会在最终字符之前立即匹配。
$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/D";
答案 1 :(得分:0)
您需要使用多行模式修饰符m
,如下所示:
$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/m"; // note m at end after pattern