要么我真的在这里迟钝,要么只是睡眠不足,但为什么这不起作用?如果我使用“或”运算符,它适用于每个单独的测试,但一旦将其更改为“和”运算符,它就会停止工作.
我正在尝试测试表单的密码输入,以查看它是否包含小写,大写和至少1个符号.我遇到了很多麻烦,所以帮助很可爱,这是我的代码.
var upperCase= new RegExp('[^A-Z]'); var lowerCase= new RegExp('[^a-z]'); var numbers = new RegExp('[^0-9]'); if(!$(this).val().match(upperCase) && !$(this).val().match(lowerCase) && !$(this).val().match(numbers)) { $("#passwordErrorMsg").html("Your password must be between 6 and 20 characters. It must contain a mixture of upper and lower case letters,and at least one number or symbol."); } else { $("#passwordErrorMsg").html("OK") }
解决方法
所有正则表达式都在搜索除您提供的范围之外的任何内容.所以,[^ A-Z]寻找除A-Z之外的任何东西.
你也在否定每场比赛.
您可以尝试通过删除^,然后反转逻辑来修改正则表达式定义.所以,
var upperCase= new RegExp('[A-Z]'); var lowerCase= new RegExp('[a-z]'); var numbers = new RegExp('[0-9]'); if($(this).val().match(upperCase) && $(this).val().match(lowerCase) && $(this).val().match(numbers)) { $("#passwordErrorMsg").html("OK") } else { $("#passwordErrorMsg").html("Your password must be between 6 and 20 characters. It must contain a mixture of upper and lower case letters,and at least one number or symbol."); }
这甚至可能更直观易读?