中正則表達式在我的程序php中,我想用戶不輸入任何字符,但字母 像這樣:「dgdh」,「sgfdgdfg」但他沒有輸入數字或其他任何類似「7657」或「GFD( - 」或「fd54」 我測試這個功能,但它並沒有涵蓋所有情況:檢查用戶輸入的值在php
preg_match("#[^0-9]#",$_POST['chaine'])
我怎麼能做到這一點,預先感謝您
中正則表達式在我的程序php中,我想用戶不輸入任何字符,但字母 像這樣:「dgdh」,「sgfdgdfg」但他沒有輸入數字或其他任何類似「7657」或「GFD( - 」或「fd54」 我測試這個功能,但它並沒有涵蓋所有情況:檢查用戶輸入的值在php
preg_match("#[^0-9]#",$_POST['chaine'])
我怎麼能做到這一點,預先感謝您
最簡單的可以是
preg_match('/^[a-z]+$/i', $_POST['chaine'])
的i
修改是不區分大小寫。 +
是至少輸入一個字母。如果您想允許空字符串,您可以將其更改爲*
。錨點^
和$
強制整個字符串只是字母表。 (它們分別表示字符串的開始和字符串的結尾)。
如果你希望允許空白,你可以使用:
空白只在字符串的開頭或結尾:
preg_match('/^\s*[a-z]+\s*$/i', $_POST['chaine'])
任何地方:
preg_match('/^[a-z][\sa-z]*$/i', $_POST['chaine']) // at least one alphabet
只允許空格字符,但不允許其他空格:
preg_match('/^[a-z][ a-z]*$/i', $_POST['chaine'])
謝謝動靜能量,這是另一個好主意,我沒有考慮過空白 – user201892
只有匹配字母(無空白) :
preg_match("#^[a-zA-Z]+$#",$_POST['chaine'])
說明:
^ # matches the start of the line
[a-zA-Z] # matches any letter (upper or lowercase)
+ # means the previous pattern must match at least once
$ # matches the end of the line
使用空格:
preg_match("#^[a-zA-Z ]+$#",$_POST['chaine'])
我還在編輯.. –
非常感謝,現在有效 – user201892
兩件事情。首先,你匹配非數字字符。這顯然與字母字符不一樣。因此,您可以簡單地使用[a-zA-Z]
或[a-z]
以及不區分大小寫的修飾符。
其次,你只嘗試找到其中的一個字符。你並沒有斷言整個字符串是由這些字符組成的。所以用這個來代替:
preg_match("#^[a-z]*$#i",$_POST['chaine'])
*另見[打開源使用RegexBuddy替代(http://stackoverflow.com/questions/89718/is-there)和[在線的正則表達式的測試](http://stackoverflow.com/questions/32282/regex-testing),或者[RegExp.info](http://regular-expressions.info/)獲得更好的教程。 – mario