包含至少 3 个以下 [0-9]、[a-z]、[A-Z] 或特殊字符($ 除外)的正则表达式
Regex containing at-least 3 of the following [0-9], [a-z], [A-Z] or special characters (except $)
我需要一个正则表达式来验证 HTML 中的输入字段。该模式应至少包含以下三项:
- 编号[0-9]
- 大写字母 [A-Z]
- 小写字母[a-z]
- 特殊字符($除外)
- 最小长度为 6。
有效的输入字符串:
- AAss11
- AA11@@
- aa11@@
- AAss@@
无效的输入字符串:
- AAAAAA
- AA11111
- aa111111
- AA@@@@@@
- AAss11$
- 1111111
- @@@@@@
- Asssss
- AAss11@$
我写了这个正则表达式:
^(((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[^$])|((?=.*[A-Z])(?=.*[a-z])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])|((?=.*[A-Z])(?=.*[0-9])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])|((?=.*[a-z])(?=.*[0-9])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])).{6,16}$
您可以进行所有迭代(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" +
"Asssss\n" +
"AAss11@$\n";
var match;
while ( match = RxPwd.exec( strPwdTest ) )
{
console.log( match[0], "\t ..Passed" );
}
我需要一个正则表达式来验证 HTML 中的输入字段。该模式应至少包含以下三项:
- 编号[0-9]
- 大写字母 [A-Z]
- 小写字母[a-z]
- 特殊字符($除外)
- 最小长度为 6。
有效的输入字符串:
- AAss11
- AA11@@
- aa11@@
- AAss@@
无效的输入字符串:
- AAAAAA
- AA11111
- aa111111
- AA@@@@@@
- AAss11$
- 1111111
- @@@@@@
- Asssss
- AAss11@$
我写了这个正则表达式:
^(((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[^$])|((?=.*[A-Z])(?=.*[a-z])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])|((?=.*[A-Z])(?=.*[0-9])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])|((?=.*[a-z])(?=.*[0-9])(?=.
[!#%&'()*+,-./:;<=>?@[\]^_`{|}~])[^$])).{6,16}$
您可以进行所有迭代(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" +
"Asssss\n" +
"AAss11@$\n";
var match;
while ( match = RxPwd.exec( strPwdTest ) )
{
console.log( match[0], "\t ..Passed" );
}