Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式,用于验证给定字符串中至少n个大写、小写、数字和特殊字符的字符串_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 正则表达式,用于验证给定字符串中至少n个大写、小写、数字和特殊字符的字符串

Javascript 正则表达式,用于验证给定字符串中至少n个大写、小写、数字和特殊字符的字符串,javascript,jquery,regex,Javascript,Jquery,Regex,我需要添加为密码中的每种类型(大写、小写、数字和特殊)字符提供最小字符数(范围0-9)的功能 我发现了很多解决方案,至少为1个特殊/大写/小写/数字()提供了解决方案,但没有一个通用解决方案可以满足我的要求 我在下面的字符串中尝试了至少n个特殊字符,但它不起作用 function CheckSpecialChars(n, NewPassword){ var PasswordPattern ="^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+]{n

我需要添加为密码中的每种类型(大写、小写、数字和特殊)字符提供最小字符数(范围0-9)的功能

我发现了很多解决方案,至少为1个特殊/大写/小写/数字()提供了解决方案,但没有一个通用解决方案可以满足我的要求

我在下面的字符串中尝试了至少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不客气。我在等你再次发帖,所以我领先了。:)