我想驗證輸入字段與此模式的正則表達式[A-Za-z]{,10}
我希望它只發現一個匹配,如果在輸入字段中發送10個或更少的字符,我得到的問題是它會匹配所有少於10個字符的單詞。使用正則表達式按長度過濾字符串
有沒有辦法說,如果有超過10個字符在輸入字段回來爲false,還是隻是更好地用PHP做strlen
?
我想驗證輸入字段與此模式的正則表達式[A-Za-z]{,10}
我希望它只發現一個匹配,如果在輸入字段中發送10個或更少的字符,我得到的問題是它會匹配所有少於10個字符的單詞。使用正則表達式按長度過濾字符串
有沒有辦法說,如果有超過10個字符在輸入字段回來爲false,還是隻是更好地用PHP做strlen
?
在OP和所有當前正則表達式答案中存在一個重要的語法錯誤:在PHP中使用大括號量詞時(PCRE),您需要指定第一個數字。 (即表達式:{,10}
不是一個有效的量詞!)儘管逗號和第二個數字是可選的,但是需要一個大括號量詞的第一個數字。因此,表達式應該像這樣指定:
if (preg_match('/^[A-Za-z]{0,10}$/', $text))
// Valid input
else
// Invalid input
如果您需要驗證它只是字母,請不要使用strlen()
。相反,把邊界(^$
)對您正則表達式:
/^[A-Za-z]{,10}$/
如果你只是匹配^[A-Za-z]{,10}$
它會檢查整個字符串是10或更少。
^[A-Za-z]{,10}$
[email protected]#$^&$a36#&$^
將通過您的正則表達式,因爲a
是它的串並a
通[A-Za-z]{,10}
如果你只在字符串的長度有關,正則表達式是嚴厲的,你應該使用strlen
代替。
請注意:'{,10}'是一個無效的量詞。雖然:「{10,}」表示「_」匹配10次或更多次「_,但表達式」{,10}「並不意味着_」匹配0到10次「_實際上意味着:_」匹配一個左花括號,一個逗號,數字1,數字0和一個右花括號「_。要得到你想要的行爲,你需要像這樣指定第一個數字:'{0,10}'。 – ridgerunner