javascript中的正则表达式配置

javascript中的正则表达式配置,javascript,regex,Javascript,Regex,这就是我到目前为止所做的 ^(?=.'{'8,14'}'$)(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9!@#$%^&*]).*$ 它允许一个至少一个小写、一个大写、一个数字和一个最小长度为8、最大长度为14的特殊字符 如果我不想要任何数字,我就用这个 ^(?=.'{'8,14'}')(?=.*^([^0-9]*)$)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])(?

这就是我到目前为止所做的

^(?=.'{'8,14'}'$)(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9!@#$%^&*]).*$ 
它允许一个至少一个小写、一个大写、一个数字和一个最小长度为8、最大长度为14的特殊字符

如果我不想要任何数字,我就用这个

^(?=.'{'8,14'}')(?=.*^([^0-9]*)$)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9!@#$%^&*]).*$
但如果我希望它不接受任何小写字母,那么它应该是什么样子呢? 如果以后我想接受小写而不是大写,那么它应该是什么样子,或者如果我想删除特殊字符,那么表达式应该是什么样子。我对javascript和正则表达式没有任何概念,所以请帮助我使用表达式,我不允许使用迭代


注意:
“{8,14'}”
这里单引号仅用作转义序列,因此请不要为此费心

将逻辑拆分为多个正则表达式并通过每个正则表达式运行字符串可能更清晰/更容易:

var rules = [
  /^.{8,14}$/,
  /[a-z]/,
  /[A-Z]/,
  /[0-9]/,
  /[!@#$%^&]/
];

function isValid(str) {
  for (var i = 0, l = rules.length; i < l; i++)
    if (!rules[i].test(str)) return false;
  return true;
}

isValid('abc'); // false
isValid('a0%Aeeee'); // true
var规则=[
/^.{8,14}$/,
/[a-z]/,,
/[A-Z]/,,
/[0-9]/,
/[!@#$%^&]/
];
函数isValid(str){
for(var i=0,l=rules.length;i
您还可以添加最后的
/^[a-zA-Z0-9!@$%^&]+$/
,以确保仅使用了您指定的字符

但如果我希望它不接受任何小写字母,那么它应该是什么样子呢

然后,您可以添加
负前瞻

(?!.*[a-z])
如果以后我想接受小写而不是大写,那么应该是怎样的呢

最小长度为8,最大长度为14


为此,您不需要
lookahead
。只需将
*$
更改为
{8,14}$

最简单的解决方案是将正则表达式分解为单独处理每个测试,就像一个测试用于小写,另一个测试用于大写,并且仅在需要时调用它们(?=[a-z])如果我删除它,那么它不应该接受小写,对吗?但它仍然接受它应该被合并到
/^.{8,14}$/
,即
/^[a-zA-Z0-9!@$%^&]+$/
(?!.*[A-Z])