Javascript 正则表达式,用于验证给定字符串中至少n个大写、小写、数字和特殊字符的字符串
我需要添加为密码中的每种类型(大写、小写、数字和特殊)字符提供最小字符数(范围0-9)的功能 我发现了很多解决方案,至少为1个特殊/大写/小写/数字()提供了解决方案,但没有一个通用解决方案可以满足我的要求 我在下面的字符串中尝试了至少n个特殊字符,但它不起作用Javascript 正则表达式,用于验证给定字符串中至少n个大写、小写、数字和特殊字符的字符串,javascript,jquery,regex,Javascript,Jquery,Regex,我需要添加为密码中的每种类型(大写、小写、数字和特殊)字符提供最小字符数(范围0-9)的功能 我发现了很多解决方案,至少为1个特殊/大写/小写/数字()提供了解决方案,但没有一个通用解决方案可以满足我的要求 我在下面的字符串中尝试了至少n个特殊字符,但它不起作用 function CheckSpecialChars(n, NewPassword){ var PasswordPattern ="^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+]{n
function CheckSpecialChars(n, NewPassword){
var PasswordPattern ="^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+]{n})[A-Za-z\\d!@#$%^&*()_+]{8,20}$";
var NewPassword = $('#txt').val();
var PasswordRegEx = new RegExp(PasswordPattern, 'g');
if (!PasswordRegEx.test(NewPassword)) {
$('.er').html('not matched');
return false;
}else{
$('.er').html('matched');
return false;
}
}
// if minimum 2 special characters are mandatory
Valid String: sad@j234KSS&ff // has more than 2 special chars
Invalid String: sdf#kj034950 // has less than 2 special chars
您需要使用构造函数构造正则表达式,因为n是可变的。以下是一个例子: 用n=2构建正则表达式:
var n=2;
var constructedRegEx=“^(?=(?:.[0-9]){“+n+”,})(?=(?:.[a-z]){“+n+”,})(?=(?:.[a-z]){“+n+”,})(?=(?:.[!@$%^&*()){“+n+”,})。+$”;
var PasswordRegEx=newregexp(constructedRegEx,'m');
log(PasswordRegEx.test('@Al1#a2B');
console.log(PasswordRegEx.test('@Al1#a2');
好吧,你应该在构造函数表示法中使用两个反斜杠,并且你不应该在RegExp.test()中使用的正则表达式中使用g
标志。
方法。尝试var PasswordRegEx=/^.[a-zA-Z])(?=.*\d)(?=.[![!+$%^&&*.--+++-[[]n}.[a-zA-Z-*.-%++++-/-/--[]“构造函数表示法中的双反斜杠”是指新的RegExp(模式、标志)
-这是构造函数表示法。你需要用另一个反斜杠来转义反斜杠,因此是双反斜杠。你用一个字符串初始化一个RegExp。因此,里面的所有反斜杠都用作转义符号。正则表达式引擎需要在d
之前有一个文本\
,才能真正匹配一个数字。只要试着提醒你的密码就可以了你会明白我的意思的。至少一个字母不复杂,(?=[^a-z]*[a-z])
(?=(?:[^a-z]*[a-z]){2})((?:[^a-z]*[a-z]*[a-z]){/code>,两个这么一个。@JitendraPancholi不客气。我在等你再次发帖,所以我领先了。:)