0

我正在尝试制作一个正则表达式,它允许输入包括至少一个数字和至少一个字母(无论是大写还是小写)而没有其他内容。这是我想出的:

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

如果我只使用数字或字母,它会给出错误,但如果我添加 $ 或 # 或任何其他非字母数字符号,它会给出 true。现在,我尝试将 ^\W 放入带有 az 和 0-9 的类括号中,尝试使用类似 ?=.*[^\W] 或 ?>! 但我就是无法让它工作。输入非字母数字仍然会导致结果为真。哈普米

4

2 回答 2

1

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

^(?=.*[a-z]+)(?=.*[0-9]+)(\w+)$
于 2013-07-07T15:53:19.273 回答
0

既然您使用的是 php,为什么还要使用正则表达式。您可以使用ctype_alnum()

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

于 2013-07-07T16:08:54.707 回答