当前位置: 首页 > 知识库问答 >
问题:

包含以下[0-9]、[a-z]、[a-z]或特殊字符中至少3个的正则表达式(美元除外)

赖翰
2023-03-14

我需要一个正则表达式来验证HTML中的输入字段。该模式应至少包含以下三项:

  1. 数字[0-9]
  2. 大写字母[A-Z]
  3. 小写字母[a-z]
  4. 特殊字符(美元除外)
  5. 最小长度为6

有效输入字符串:

  1. AAss11

无效的输入字符串:

  1. AAAAA
  2. AA11111
  3. aa111111
  4. AA@@@@@@
  5. AAss11$
  6. 1111111
  7. <>@@@@@@
  8. $1Asssss
  9. AAss11@$

我写了这个正则表达式:

    ^(((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[^$])|((?=.*[A-Z])(?=.*[a-z])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])|((?=.*[A-Z])(?=.*[0-9])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])|((?=.*[a-z])(?=.*[0-9])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])).{6,16}$

共有1个答案

杨乐
2023-03-14

你可以做所有的迭代(4次中的3次)。如果ECMAScript new出来了,并且
它支持条件(?(cond)yes|no)这被大大简化了。

在这里,它是无序的:

^(?:(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])|(?=.*[0-9])(?=.*[a-z])(?=.*[!"#%&'()*,\-./:;?@[\]_{}])|(?=.*[0-9])(?=.*[A-Z])(?=.*[!"#%&'()*,\-./:;?@[\]_{}])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!"#%&'()*,\-./:;?@[\]_{}]))[0-9a-zA-Z!"#%&'()*,\-./:;?@[\]_{}]{6,16}$

扩展视图

 ^ 
 (?:
      (?= .* [0-9] )
      (?= .* [a-z] )
      (?= .* [A-Z] )
      #(?= .*[!"#%&'()*,\-./:;?@[\]_{}] )

   |  
      (?= .* [0-9] )
      (?= .* [a-z] )
      #(?= .*[A-Z] )
      (?= .* [!"#%&'()*,\-./:;?@[\]_{}] )

   |  
      (?= .* [0-9] )
      #(?= .*[a-z] )
      (?= .* [A-Z] )
      (?= .* [!"#%&'()*,\-./:;?@[\]_{}] )

   |  
      #(?= .*[0-9] )
      (?= .* [a-z] )
      (?= .* [A-Z] )
      (?= .* [!"#%&'()*,\-./:;?@[\]_{}] )

 )
 [0-9a-zA-Z!"#%&'()*,\-./:;?@[\]_{}]{6,16} 
 $ 

JS示例

var RxPwd = new RegExp("^(?:(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])|(?=.*[0-9])(?=.*[a-z])(?=.*[!\"#%&'()*,\\-./:;?@[\\]_{}])|(?=.*[0-9])(?=.*[A-Z])(?=.*[!\"#%&'()*,\\-./:;?@[\\]_{}])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!\"#%&'()*,\\-./:;?@[\\]_{}]))[0-9a-zA-Z!\"#%&'()*,\\-./:;?@[\\]_{}]{6,16}$", "mg");

var strPwdTest = 
// Should pass
"AAss11\n"  +
"AA11@@\n"  +
"aa11@@\n"  +
"AAss@@\n"  +
// Should fail
"AAAAAA\n"  +
"AA11111\n"  +
"aa111111\n"  +
"AA@@@@@@\n"  +
"AAss11$\n"  +
"1111111\n"  +
"@@@@@@\n"  +
"$1Asssss\n"  +
"AAss11@$\n";

var match;

while ( match = RxPwd.exec( strPwdTest ) )
{
    console.log( match[0], "\t ..Passed" );
}
 类似资料:
  • 我试图从包含非alpha字符的字符串列表中删除单词,例如: 但我不能随意删除包含非alpha字符的单词,因为可能出现以下情况: 我需要想出一个正则表达式或类似的方法来处理这样的简单情况(所有类型的标点符号): 我使用一个自然语言包装类将句子转换为左侧的列表,但有时列表要复杂得多: 正如您所看到的,一些字符(如括号和撇号)被包装器转换或删除。我想将所有这些无关的子字符串处理成一个更干净的外观: 我对

  • 问题内容: 我正在寻找符合以下规则的正则表达式。 允许的字符 字母:az / AZ 数字:0-9 特殊字符:〜@#$ ^&*()-_ + = [] {} | \,。?:( 应允许使用空格) 不允许 特殊字符:<>’“ /;`% 问题答案: 对于允许的字符,您可以使用 验证应仅由允许的字符组成的完整字符串。请注意,在结尾处(否则将是一个范围),并且转义了几个字符。 对于无效字符,您可以使用 检查他们

  • 我需要一个正则表达式,它应该至少有一个数字字符,允许大小写字母,也允许特殊字符 但它对最大字符10无效。

  • 我能够编写一个正则表达式来验证输入框的以下标准。 至少包含14个字符 正则表达式- 然而,这个正则表达式允许其他未提及的特殊字符。我想限制所有特殊字符,除了这些

  • 我需要一个正则表达式来检查: 密码至少包含八个字符,其中至少包含一个数字,并且包含大小写字母和特殊字符,例如、、。 它不能是您的旧密码,也不能包含您的用户名、或 这里是我的验证表达式,它针对八个字符,包括一个大写字母,一个小写字母,和一个数字或特殊字符。 密码必须是八个字符,包括一个大写字母,一个特殊字符和字母数字字符,我怎么写呢?

  • 编写一个方法,根据字符(char)[输入]是否是要编码的有效字符,返回true或false。即,如果输入[输入字符]为'a'-'z'或'a'-'z',则返回true,否则返回false。 为什么我的答案错了???? 公共静态布尔isValidChar_Q1(char chr){ }