PHP,正则表达式-如何禁止非字母数字字符
我正在尝试制作一个正则表达式,它允许输入至少一个数字和至少一个字母(不管是大写还是小写),而不允许其他内容。以下是我的想法:PHP,正则表达式-如何禁止非字母数字字符,php,regex,Php,Regex,我正在尝试制作一个正则表达式,它允许输入至少一个数字和至少一个字母(不管是大写还是小写),而不允许其他内容。以下是我的想法: <?php if (preg_match('/(?=.*[a-z]+)(?=.*[0-9]+)([^\W])/i',$code)) { echo "=)"; } else { echo "=("; } ?> 如果我只使用数字或字母,它会给出false,如果我添加$or#或任何其他非字母数字符号,它会给出true。现
<?php
if (preg_match('/(?=.*[a-z]+)(?=.*[0-9]+)([^\W])/i',$code)) {
echo "=)";
} else {
echo "=(";
}
?>
如果我只使用数字或字母,它会给出false,如果我添加$or#或任何其他非字母数字符号,它会给出true。现在,我尝试用a-z和0-9将^\W放在类括号中,尝试使用类似于?=.[^\W]或?>!但我就是不能让它工作。在非字母中键入仍然会导致true。Halp meeee您需要使用锚点,以便它与整个字符串匹配
^(?=.*[a-z]+)(?=.*[0-9]+)(\w+)$
既然您使用的是php,为什么还要使用正则表达式呢。您可以使用
ctype\u alnum()
什么是“没有别的”呢?“任何输入如果包含一个数字和一个字母都是好的”这是什么意思?您的正则表达式永远不会匹配,因为lookaheads需要两个字符,而表达式只匹配一个字符。另外,
[^\W]
与\W
相同,因此只需使用它即可。这里有一个有效的例子:-除此之外,你对锚的看法是正确的。锚…现在看起来很明显。非常感谢你,我的朋友,现在一切都好了!