正则表达式帮助 - 识别符号

时间:2011-08-15 17:31:29

标签: php regex string validation

我正在尝试使用正则表达式来验证用户的输入,我想要允许字母,数字,空格和以下符号中的任何字母:

! £$%& *()_ + [] :; @〜#< > ? ,。 -

我从来没有那么好用正则表达式,因为它让我感到困惑。这是我得到的最好的,但它不能正常工作,因为如果我放一个?在现场我收到错误。

<?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

如果有人可以帮助我,也许可以解释为什么我的例子不起作用,所以我可以从我的错误中吸取教训,非常感谢,谢谢!

1 个答案:

答案 0 :(得分:1)

在^之前和$之后你有一些额外的/,这个应该有效:

preg_match('/^[a-zA-Z0-9\s!£$%&*()_+[\]:;@~#<>?,.-]+$/m', $title)

同样,m修饰符会导致$与行尾相匹配,并允许某人在第一行后添加任何字符,因此您应将其删除。