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


Regex for only allowing letters, numbers, space, commas, periods?

我对正则表达式一无所知,因为它对我来说太复杂了。我正在与一个程序,限制输入的用户基于正则表达式工作。我目前正在寻找一个正则表达式,它只允许用户输入:

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

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

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

我已经尝试了这个正则表达式,没有成功,我目前正在寻找其他的尝试。

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

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

"嗨,我叫约翰!我喜欢吃苹果、橘子和葡萄。你愿意和我一起吃饭吗?

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

就是正则表达式,它可以工作,参见示例网站来测试正则表达式

您还可以使用'/^ (' 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

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