任何人都可以告訴我爲什麼這個簡單的正則表達式失敗?PHP正則表達式幫助需要
$blogurl = 'http://www.sirpi.org/2011/02/23/';
if(preg_match("/[0-9]\/[0-9]\/[0-9]\/$/", $blogurl)){
echo "Bad URL\n";
}
任何人都可以告訴我爲什麼這個簡單的正則表達式失敗?PHP正則表達式幫助需要
$blogurl = 'http://www.sirpi.org/2011/02/23/';
if(preg_match("/[0-9]\/[0-9]\/[0-9]\/$/", $blogurl)){
echo "Bad URL\n";
}
您似乎試圖測試字符串末尾是否有/
之間的數字。爲此,您可以使用
$blogurl = 'http://www.sirpi.org/2011/02/23/';
if(preg_match("/[0-9]+\/[0-9]+\/[0-9]+\/$/", $blogurl)){
echo "Bad URL\n";
}
+
表示一個或多個。否則,你只是匹配一個數字,並且URL中的數字不只是單個數字。
您還可以使用\d
的數字,而不是[0-9]
:
$blogurl = 'http://www.sirpi.org/2011/02/23/';
if(preg_match("/\d+\/\d+\/\d+\/$/", $blogurl)){
echo "Bad URL\n";
}
謝謝,上面的代碼使用\ d +就像一個魅力 – 2011-03-12 10:03:01
你匹配此:
one of characters 0-9
a literal slash ("/")
one of characters 0-9
a literal slash ("/")
one of characters 0-9
a literal slash ("/")
end of string
您可能要匹配年中有一個以上的數字,同樣有月和日。
/[0-9]\/[0-9]\/[0-9]\/$/
正在尋找一個
[0-9] a single digit
\/ followed by a/
[0-9] a single digit
\/ followed by a/
[0-9] a single digit
\/ followed by a/
$ at the end of the string
嘗試
/[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,2}\/$/
whic試驗的每個數字/
[0-9]
之間的號碼相匹配的單個數字。所以這個正則表達式匹配一個數字,一個斜槓,一個數字,一個斜線,一個數字,一個斜槓和一個字符串的結尾。
所以它會匹配4/5/6/
,但不匹配11/22/33/
。
如果你想匹配一個或多個數字,你應該使用[0-9]+
。如果您希望匹配零個或多個數字,您還可以使用[0-9]*
。
,因爲你正在尋找個位數。試試這個:
"/[0-9]{4}\/[0-9]{2}\/[0-9]{2}\/$/"
另外,如果你想讓sub url的東西數量變化,
"/(\/[0-9]+)+\/?$/"
即,至少一個/接着一串數字,然後任選的精加工/。
看起來像你的例子中的網址是日期,所以這可能沒有必要。
如果你解釋了這個代碼被認爲是做什麼的,它可能會有所幫助。事實上,該正則表達式永遠不會匹配該字符串。 – canuckistani 2011-03-12 09:45:28