我正在尋找一個正則表達式,將對陣:X_XPHP簡單的regex的問題
其中X始終是一個大於零偉大,就必須在這兩個數字之間是一個下劃線。
謝謝。
編輯:當我運行
$圖案= 「[1-9] _ [1-9]」; if( preg_match($ pattern,$ key))return TRUE;
我得到警告:
消息:的preg_match() [function.preg匹配]:未知 修改 '_'
我正在尋找一個正則表達式,將對陣:X_XPHP簡單的regex的問題
其中X始終是一個大於零偉大,就必須在這兩個數字之間是一個下劃線。
謝謝。
編輯:當我運行
$圖案= 「[1-9] _ [1-9]」; if( preg_match($ pattern,$ key))return TRUE;
我得到警告:
消息:的preg_match() [function.preg匹配]:未知 修改 '_'
嘗試這種
$pattern = "/[1-9]_[1-9]/";
甲正則表達式串是由正則表達式和改性劑的(如I,M)。由於它們都是單個字符串的一部分,因此它們之間有強制分隔符 - 單個字符,如管道,斜線,分號。既然你可以使用任何符號,你必須聲明你將使用哪一個符號。選擇是用你的正則表達式字符串的第一個字符聲明的。如果是/,則分隔符將爲/。如果是|,則分隔符將是|。
所以這是完全等同的(正則表達式「測試」,修改「I」):
preg_match("/test/i");
preg_match("|test|i");
preg_match(":test:i");
,如果您使用的分隔符前面,PHP解釋下一個字符作爲改性劑。這是發生在你身上的事情(因爲你以[,PHP解釋]作爲分隔符開始並且_作爲修飾符)。
你正在尋找的模式是:
$pattern = '/^\d+_\d+$/';
注^和$!省略這些(正如大多數其他答案一樣)是一個巨大的錯誤(因爲它允許在匹配的部分之前和之後的任何字符串;如果您忘記^,-20_1也會匹配,因爲它有一個有效的子字符串:20_1)。
而且數字應該小於10嗎?換句話說,一個數字號碼? – 2011-03-19 21:28:02
沒有數字可以高得多,也許5位數字。理想情況下,我不想強加限制。 – stef 2011-03-19 21:30:32
在這種情況下,您需要Andrew的解決方案(儘管在分隔符中)。 – 2011-03-19 21:32:33