2015-01-07 40 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

相關問題