我正在尝试使用正则表达式来验证用户的输入,我想要允许字母,数字,空格和以下符号中的任何字母:
! £$%& *()_ + [] :; @〜#< > ? ,。 -
我从来没有那么好用正则表达式,因为它让我感到困惑。这是我得到的最好的,但它不能正常工作,因为如果我放一个?在现场我收到错误。
<?php
$title = $_POST['title'];
if (!preg_match('/\/^[a-zA-Z0-9\s!£$%&*()_+[\]:;@~#<>?,.-]+$\//m', $title)) {
$error = "Photo name contains unsafe characters.";
$solution = "<a href=\"javascript:history.go(-1)\">Try again?</a>";
}
if ($error) { echo("$error");
?>
为什么我总是把这些正则表达式的东西弄错了,就在我想我开始理解的时候,我很快意识到我真的没有! :P
如果有人可以帮助我,也许可以解释为什么我的例子不起作用,所以我可以从我的错误中吸取教训,非常感谢,谢谢!
答案 0 :(得分:1)
在^之前和$之后你有一些额外的/
,这个应该有效:
preg_match('/^[a-zA-Z0-9\s!£$%&*()_+[\]:;@~#<>?,.-]+$/m', $title)
同样,m
修饰符会导致$
与行尾相匹配,并允许某人在第一行后添加任何字符,因此您应将其删除。