2016-07-28 48 views
-1
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W])[A-Za-z\d\W]{8,}  

经常用于密码验证表达应该是最小的8个字符,1下的情况下,1上的情况下,1号,1个特殊字符,不应包含空格和逗号密码验证允许某些分8性格特征的特殊字符,numbe,字母和不应包含空格和逗号

+0

当我们输入这个文本Helloworld !,作为密码它应该会抛出错误,因为它包含逗号 –

+1

你的问题是什么? –

+0

当我们输入这个文本Helloworld !,作为密码它应该会抛出错误,它包含逗号 –

回答

1

您可以创建包含RegExp项目阵列应返回true,并且应该返回false,使用Array.prototype.every()来检查,如果字符串中包含的每个值

var str = `1aB$1234`; 
 
var str1 = `1aB$,234`; 
 
var str2 = `1aB$123 `; 
 
// should match at least one of each `RegExp` in array 
 
var matches = [/[a-z]{1}/, /[A-Z]{1}/, /[0-9]{1}/, /[!#$]{1}/]; 
 
// should not match any `RegExp` in array 
 
var not = [/,/, /\s/] 
 

 
var checkpw = (input) => matches.every(match => new RegExp(match).test(input)) 
 
         && not.every(n => !new RegExp(n).test(input)) 
 
         && input.length === 8; 
 

 
console.log("\n","str:" + `${str}:` + checkpw(str) + "\n" 
 
      , "str1:" + `${str1}:` + checkpw(str1) + "\n" 
 
      , "str2:" + `${str2}:` + checkpw(str2));

+0

你的语法是正确的,但对我的眼睛来说并不常见......我从来没有见过这样的事情'var checkpw =(input)=> ......到目前为止。你为什么在变量名的开头使用'$'? – Shafizadeh

+0

@Shafizadeh请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions,https://developer.mozilla.org/en-US/docs/Web/JavaScript/参考/ Template_literals – guest271314

+0

太好了。 。 。 。 +1 – Shafizadeh

相关问题