2015-01-07 43 views
0

给定一个字符串和正则表达式,我怎样才能确保它匹配整个字符串?也就是说,我不希望换行触发比赛结束 - 我希望它匹配到字符串的最后。匹配到PHP中字符串的末尾

例子:

<?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

如果第一个'trim'呢? –

回答

4

使用D modifier

d(PCRE_DOLLAR_ENDONLY)
如果这个修饰符被设置,一个美元元字符i n模式仅在主题字符串的末尾匹配。如果没有这个修饰符,如果它是一个换行符(但不在其他换行符之前),那么一个美元也会在最后一个字符之前立即匹配。

$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/D"; 
0

你可能会需要使用多行模式修改m这样的:

$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/m"; // note m at end after pattern 
+1

这有什么用? – anubhava

+1

来自OP:“也就是说,我不希望换行符触发比赛结束” – sjagr

+1

它没有。修饰符'D'是必要的,请参阅我的答案。 – CBroe

相关问题