preg_match在php中只允许大写字母、数字、空格和字符(,/-)

preg_match在php中只允许大写字母、数字、空格和字符(,/-),php,html,Php,Html,我想匹配用户输入地址是否包含大写字母、数字、空格和字符。,/-但它接受所有特殊字符,并且不遵循preg_匹配。我的代码中的错误在哪里?你能给我一些易于学习的preg_match?我试过用谷歌搜索,但到目前为止我发现的都是复杂的。下面是我的代码 $address = $_POST["address"]; if (!preg_match("([^A-Z0-9 ".preg_quote(".,/-")."])",$address)) { $addressError = "*Address con

我想匹配用户输入地址是否包含大写字母、数字、空格和字符。,/-但它接受所有特殊字符,并且不遵循preg_匹配。我的代码中的错误在哪里?你能给我一些易于学习的
preg_match
?我试过用谷歌搜索,但到目前为止我发现的都是复杂的。下面是我的代码

$address = $_POST["address"];

if (!preg_match("([^A-Z0-9 ".preg_quote(".,/-")."])",$address))
{
  $addressError = "*Address contains special characters that are not allowed";
}
过于复杂化

$address = $_POST["address"];

if (!preg_match("/^[0-9A-Z .\/,-]+$/",$address))
{
  $addressError = "*Address contains special characters that are not allowed";
}
这是一个很好的资源:

在事物上盘旋也会告诉你它们做什么

附带建议。您总是希望在表单提交之前向用户提供反馈。因此,在使用数据之前,您应该始终在后端进行验证,但建议您在输入字段上的javascript或HTML5的新属性“pattern”中进行此类检查


您需要转义点,因为点表示任何字符。空格实际上是不固定的,但不可以,您可以在php正则表达式中使用空格字符本身。我建议您也删除尾随和前导斜杠。如果您想提交答案,请指定原因好吗。PHP正则表达式需要某种类型的清除器来启动和结束模式。