2014-04-21 173 views
0

下面的代碼顯示了一個簡單的方法來檢查名稱字段是否只包含字母和空白。如果名稱字段的值是無效的,那麼存儲的錯誤消息:preg_match模式檢查條只包含字母,空格和點

$name = test_input($_POST["name"]); 
if (!preg_match("/^[a-zA-Z ]*$/",$name)) 
{ 
$nameErr = "Only letters and white space allowed"; 
} 

我的問題是如何在這裏補充點(。)?

回答

2

交易所這一行:

if (!preg_match("/^[a-zA-Z ]*$/",$name)) 

這一行:

if (!preg_match("/^[a-zA-Z\. ]*$/", $name)) 

你必須逃離.角色,因爲它在正則表達式的特殊含義。

+0

謝謝,希望這要工作:) – MHH

+0

沒有問題,需要注意的是,你還可以縮短這:'的preg_match('/^[AZ \。] * $ /我! ',$ name') - ''i''標誌使表達式不區分大小寫,你也可能想要知道你當前的正則表達式將匹配一個空字符串 - 末尾的'*'字符表示'零或更多',所以沒有匹配是完全有效的。 – jonnu

+0

不幸的是好吃它沒有工作...任何想法? – MHH

1
$pattern = "/^[a-zA-Z \.]*$/"; 
1

您可以隨時添加一個。在方括號中。例如,表達式[a-zA-Z。]是正確的,並會給你想要的東西,即要檢查的字符列表。如果你想檢查。外面的[]然後逃脫了。喜歡 。此外,您的代碼不會檢查是空白的製表符。所以你應該添加\ s而不是''。同樣有很多其他的特殊字符,如?這將被視爲[]括號中的正常字符。一個例外是 - 必須始終添加,即[A-Z? - ]。然而,仍然有一些特殊字符必須避開,比如「'/。我的建議是在運行表達式之前首先檢查它,然後再將它插入到代碼中。正則表達式錯誤非常常見並且很難找到,您的表達式應該是: ! -

$name = test_input($_POST["name"]); 
if (!preg_match("/^[a-zA-Z.\s]+$/",$name)) { 
$nameErr = "Only letters and white space allowed"; 
} 

乾杯

相關問題