PHP,Regex - 如何禁止使用非字母数字字符

时间:2013-07-07 15:49:33

标签: php regex

我正在尝试制作一个正则表达式,允许输入包括至少一个数字和至少一个字母(无论是大写还是小写)和NOTHING ELSE。以下是我的想法:

<?php
    if (preg_match('/(?=.*[a-z]+)(?=.*[0-9]+)([^\W])/i',$code)) {
    echo "=)";
    } else {
    echo "=(";
    }
?>

虽然如果我只使用数字或仅使用字母,它会给出错误,但如果我添加$或#或任何其他非字母数字符号,则为true。现在,我尝试将^ \ W放入带有a-z和0-9的类括号中,尝试使用类似?=。* [^ \ W]或?&gt;!但我无法让它发挥作用。键入非alphanums仍然会导致true。 Halp meeee

2 个答案:

答案 0 :(得分:1)

您需要使用锚点以使其与整个字符串匹配。

^(?=.*[a-z]+)(?=.*[0-9]+)(\w+)$

答案 1 :(得分:0)

由于您使用的是php,为什么甚至使用正则表达式。您可以使用ctype_alnum()

http://php.net/manual/en/function.ctype-alnum.php