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

时间:2018-05-16 12:41:22

标签: php html

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

$address = $_POST["address"];

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

1 个答案:

答案 0 :(得分:1)

过度复杂化

$address = $_POST["address"];

if (!preg_match("/^[0-9A-Z .\/,-]+$/",$address))
{
  $addressError = "*Address contains special characters that are not allowed";
}

这是一个很好的资源: https://regexr.com/

悬停在事物上会告诉你他们做了什么。

侧面建议。您始终希望在表单提交之前向用户提供反馈。因此,在使用数据之前,您应该始终在后端进行验证,但是在javascript或HTML5的新属性"模式"中进行这些检查。建议输入字段。

<input type="text" name="address" id="address" pattern="[0-9A-Z ./,-] oninvalid="setCustomValidity('Address may only been digits, upper case, period, forward slash, comma and/or hyphen characters')"/>