2012-11-17 115 views
1

中正則表達式在我的程序php中,我想用戶不輸入任何字符,但字母 像這樣:「dgdh」,「sgfdgdfg」但他沒有輸入數字或其他任何類似「7657」或「GFD( - 」或「fd54」 我測試這個功能,但它並沒有涵蓋所有情況:檢查用戶輸入的值在php

preg_match("#[^0-9]#",$_POST['chaine']) 

我怎麼能做到這一點,預先感謝您

+0

*另見[打開源使用RegexBuddy替代(http://stackoverflow.com/questions/89718/is-there)和[在線的正則表達式的測試](http://stackoverflow.com/questions/32282/regex-testing),或者[RegExp.info](http://regular-expressions.info/)獲得更好的教程。 – mario

回答

0

最簡單的可以是

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']) 
+0

謝謝動靜能量,這是另一個好主意,我沒有考慮過空白 – user201892

0

只有匹配字母(無空白)

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']) 
+0

我還在編輯.. –

+1

非常感謝,現在有效 – user201892

0

兩件事情。首先,你匹配非數字字符。這顯然與字母字符不一樣。因此,您可以簡單地使用[a-zA-Z][a-z]以及不區分大小寫的修飾符。

其次,你只嘗試找到其中的一個字符。你並沒有斷言整個字符串是由這些字符組成的。所以用這個來代替:

preg_match("#^[a-z]*$#i",$_POST['chaine'])