我正在尝试制作一个正则表达式,允许输入包括至少一个数字和至少一个字母(无论是大写还是小写)和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
答案 0 :(得分:1)
您需要使用锚点以使其与整个字符串匹配。
^(?=.*[a-z]+)(?=.*[0-9]+)(\w+)$
答案 1 :(得分:0)
由于您使用的是php,为什么甚至使用正则表达式。您可以使用ctype_alnum()