function checkEmail(str){
var emailCheck = /[^a-z][0-9]/;
if(emailCheck.test(str)){
console.log("**Its Valid Mail");
}
else{
console.log("Its not Valid");
}
}
var x = '122a';
checkEmail(x);
我一直在学习正则表达式。
根据我所理解的上述代码,
x
不应包含小a-z
,而必须包含数字,因为您可以看到122a
包含数字以及小写字母a
,我认为它应该无效,但我认为它是有效的。谁能解释我在哪里想错了。
最佳答案
您正则表达式[^a-z][0-9]
匹配2个字符。第一个将使用否定的character class匹配不与a-z匹配,第二个将匹配一个数字。这将与12
中的122a
匹配
方法test在字符串中搜索匹配项,找到匹配的12
并将返回true
。
您可以使用 anchor 来声明字符串的开始^
和结束$
以匹配2个字符。在这种情况下,122a
将不匹配,因为这是4个字符。
如果要检查字符串是否不包含小写字符且包含数字,则可以使用lookahead断言其后面不是[a-z]
,而后面是数字[0-9]
。
^(?!.*[a-z])(?=.*[0-9]).*$