2014-07-14 114 views
4

我對正則表達式毫無頭緒,因爲它對我來說很複雜。我正在使用基於正則表達式限制用戶輸入的程序。我目前在一個正則表達式,只會讓用戶輸入:正則表達式只允許字母,數字,空格,逗號,句點?

A-Z and a-z 
0-9 
. 
, 
! 
? 

所以基本上任何東西在一個典型的段落或網絡文章。

程序狀態「輸入正則表達式輸入的文本必須匹配(使用s和i標誌評估preg_match)使其有效」。

我已經試過這個正則表達式沒有成功,我目前正在尋找別人嘗試。

'/^[a-zA-Z0-9,.!? ]*$/' 

應該允許一個簡單的句子,如

「大家好,我的名字是約翰!我喜歡吃蘋果,橘子,葡萄,你願意和我一起吃飯嗎?

+3

'.'是一個特殊字符。您需要轉義它:'\ .' –

+7

不,'''不需要在'[]'字符類中轉義。 –

+2

看起來像你忘了'!'和'?'。 – AbraCadaver

回答

5

Debuggex example

^[a-zA-Z0-9,.!? ]*$

是什麼正則表達式,它的工作原理,請參閱示例網站來測試正則表達式。

+0

這樣做。謝謝! – user3838246

0

你也可以使用 '/^[\ W,!?] + $ /'

字母數字\ W元字符等效於字符範圍[A-ZA-Z0-9 _]

例如:

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["message"])) { 
    $messageErr = "Message cant be empty"; 
    } elseif (preg_match('/^[\w .,!?()]+$/', $message) === false){ 
    $messageErr = "Only aA-zZ09.,!?_ are allowed"; 
    } else { 
    $message = data($_POST["message"]); 
    } 
} 
function data($data) { 
$data = trim($data); 
$data = stripslashes($data); 
$data = htmlspecialchars($data); 
return $data; 
} 
# Do something with $message 
0

你甚至不需要az或0-9。 "[\w,.!?]" 應該工作。

相關問題