正则表达式只允许字母,数字,空格,逗号,句号?

时间:2014-07-14 19:31:25

标签: php regex

我对正则表达式一无所知,因为它对我来说很复杂。我正在使用一个程序,根据正则表达式限制用户的输入。我目前正在使用只允许用户输入的正则表达式:

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

基本上是典型段落或网络文章中的任何内容。

程序声明"输入一个正则表达式,输入的文本必须匹配(用preg_match评估,使用s和i标志)才能生效。"

我试过这个正则表达式没有成功,我正在寻找其他人尝试。

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

它应该允许一个简单的句子,如

  

"我的名字是约翰!我喜欢吃苹果,橘子和葡萄。你愿意和我一起吃饭吗?

3 个答案:

答案 0 :(得分:10)

Debuggex example

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

是正则表达式,它的工作原理,参见示例网站来测试正则表达式。

答案 1 :(得分:2)

你也可以使用'/ ^ [\ 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

答案 2 :(得分:1)

您甚至不需要a-z或0-9。 "[\w,.!?]" 应该工作。