Javascript 正则表达式验证不需要';I don’我没有按预期工作
如果输入了任何值,则返回true如果我只输入一个值,则返回true根据您的评论,我已更新了我的答案: 密码需要在Javascript 正则表达式验证不需要';I don’我没有按预期工作,javascript,regex,Javascript,Regex,如果输入了任何值,则返回true如果我只输入一个值,则返回true根据您的评论,我已更新了我的答案: 密码需要在4个条件中至少匹配两个,并具有8个字符才能true var validatePassword = function(password) { var upper = new RegExp(/^(?=.*[A-Z]).+$/), lower = new RegExp(/^(?=.*[a-z]).+$/), symbols = new RegExp(/^(?=.*(
4个条件中至少匹配两个
,并具有8个字符
才能true
var validatePassword = function(password) {
var upper = new RegExp(/^(?=.*[A-Z]).+$/),
lower = new RegExp(/^(?=.*[a-z]).+$/),
symbols = new RegExp(/^(?=.*(_|[^\w])).+$/),
numbers = new RegExp(/^(?=.*\d).+$/);
if((upper.test(password) && lower.test(password)) || (upper.test(password) && numbers.test(password)) || (upper.test(password) && symbols.test(password)) || (lower.test(password) && numbers.test(password)) || (lower.test(password) && symbols.test(password)))
{
return true;
}
else
{
alert('Invalid password')
}
}
validatePassword('Foo1!');
});
你应该做:
var validatePassword = function(password) {
var numero = 0;
//check if a digit is present
if(/(?=.*?[\d]).*$/.test(password)) {
numero++;
}
//check if a uppercase letter is present
if(/(?=.*?[A-Z]).*$/.test(password)) {
numero++;
}
//check if a lowercase letter is present
if(/(?=.*?[a-z]).*$/.test(password)) {
numero++;
}
//check if a special character is present
if(/(?=.*?(_|[^\w])).*$/.test(password)) {
numero++;
}
//check if at least 8 characters are present
if (/^(?=.{8,}).*$/.test(password)) {
var length = true;
}
if( numero>=2 && length){
alert('Valid password');
console.log(numero);
return true;
}
else
{
alert('Invalid password');
console.log(numero);
}
}
validatePassword('foo4ogD!');
致:
你的正则表达式已经是正则表达式了。您不需要使用
newregexp(“patter”、“flag”)代码>让我们先简化逻辑
var upper = /^(?=.*[A-Z]).+$/,
lower = /^(?=.*[a-z]).+$/,
symbols = /^(?=.*(_|[^\w])).+$/,
numbers = /^(?=.*\d).+$/;
以上内容可以简化
var upper = new RegExp(/^(?=.*[A-Z]).+$/),
lower = new RegExp(/^(?=.*[a-z]).+$/),
symbols = new RegExp(/^(?=.*(_|[^\w])).+$/),
numbers = new RegExp(/^(?=.*\d).+$/);
// means must have (upper AND lower) OR ((upper OR lower) AND (symbol OR number))
if(
(upper.test(password) && lower.test(password)) ||
(upper.test(password) && numbers.test(password)) ||
(upper.test(password) && symbols.test(password)) ||
(lower.test(password) && numbers.test(password)) ||
(lower.test(password) && symbols.test(password))
)
var symbolsnumbers = /[\d\W_]/; // means it contains number OR non-word OR underscore
也在这里
var upper = /[A-Z]/, // means it contains uppercase
lower = /[a-z]/, // means it contains lowercase
symbols = /[\W_]/, // means it contains non-word character or underscore
numbers = /\d/; // means it contains number
以上内容可以简化
var upper = new RegExp(/^(?=.*[A-Z]).+$/),
lower = new RegExp(/^(?=.*[a-z]).+$/),
symbols = new RegExp(/^(?=.*(_|[^\w])).+$/),
numbers = new RegExp(/^(?=.*\d).+$/);
// means must have (upper AND lower) OR ((upper OR lower) AND (symbol OR number))
if(
(upper.test(password) && lower.test(password)) ||
(upper.test(password) && numbers.test(password)) ||
(upper.test(password) && symbols.test(password)) ||
(lower.test(password) && numbers.test(password)) ||
(lower.test(password) && symbols.test(password))
)
var symbolsnumbers = /[\d\W_]/; // means it contains number OR non-word OR underscore
因为它只能是(上部和下部)
它可以用计算机进行测试
upper.test(password) && lower.test(password)
因为它必须有(上或下),所以也可以一步检查
var upandlow = /[a-z][A-Z]|[A-Z][a-z]/;
var upperlower = /[a-zA-Z]/; // means it contains uppercase OR lowercase
因为它必须有(符号或数字),所以也可以一步检查它
var upandlow = /[a-z][A-Z]|[A-Z][a-z]/;
var upperlower = /[a-zA-Z]/; // means it contains uppercase OR lowercase
现在整个功能可以简化了
var upper = new RegExp(/^(?=.*[A-Z]).+$/),
lower = new RegExp(/^(?=.*[a-z]).+$/),
symbols = new RegExp(/^(?=.*(_|[^\w])).+$/),
numbers = new RegExp(/^(?=.*\d).+$/);
// means must have (upper AND lower) OR ((upper OR lower) AND (symbol OR number))
if(
(upper.test(password) && lower.test(password)) ||
(upper.test(password) && numbers.test(password)) ||
(upper.test(password) && symbols.test(password)) ||
(lower.test(password) && numbers.test(password)) ||
(lower.test(password) && symbols.test(password))
)
var symbolsnumbers = /[\d\W_]/; // means it contains number OR non-word OR underscore
这是你的电话号码
祝你好运
:)你能做到这一点吗您是否可以添加更多的案例,如test('Foo1!',true)
其中第二个参数指示密码是否有效,只有其中两个可以成功完成,我的条件是这样的密码将区分大小写,并将遵循hotmail当前的密码选择标准,该标准要求用户选择以下内容作为必填项:-!5.1. 至少8个字符;!5.2. 至少包含以下两项:-!i) 大写字母!ii)小写字母!iii)数字!iv)符号!好的,我会这样做,待命。只要检查JSFIDLE上的代码,我已经更新了你的链接,但它只给了我一个结果true@UzairAhmad密码需要与4个条件中的至少两个
相匹配
才能符合您的要求。