如果用户输入地址包含大写字母,数字,空格和字符,我希望匹配.- /但它接受所有特殊字符并且不遵循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";
}
答案 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')"/>