javascript - 密码验证正则表达式

标签 javascript regex

我正在尝试使用正则表达式验证密码

^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{6,}$

它至少限制了 1 个数字,1 个大写字母和 1 个小写字母,不是吗?
那么为什么以下结果为 true

(new RegExp('^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{6,}$')).test('aaAAffffaAfDvad')

但是下一个false

(new RegExp('^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{6,}$')).test('aaAA112')

最佳答案

这是因为\d中的\没有被正确转义:

>>> var x = new RegExp('^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{6,20}$');
>>> x
/^(?=.*d)(?=.*[A-Z])(?=.*[a-z]).{6,20}$/

>>> var x = new RegExp('^(?=.*\\d)(?=.*[A-Z])(?=.*[a-z]).{6,20}$');
>>> x
/^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{6,20}$/

您还可以利用此函数进行正确的正则表达式转义:

RegExp.escape = function(s) {
    return s.replace( /[-\/\\^$*+?.()|[\]{}]/g, "\\$&" );
};
var x = new RegExp( RegExp.escape( '^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{6,20}$') );

关于javascript - 密码验证正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13602645/

相关文章:

php - HTML 字符串中所有字符的字符数,但仅测量 20 个可见单词

javascript - FadeIn 和 FadeOut 跳转页面

javascript - 从查询字符串中查找 USSD 代码

javascript - 滚动触发器不适用于 forEach() 方法 - JavaScript

Javascript:使用通配符和替换方法

php - 有效模式的 PHP 中的 "preg_match(): Compilation failed: unmatched parentheses"

regex - 删除所有超过两个字符的单词

php - 寻求优雅的方式从字符串中删除 544 个单词的任何实例

javascript - 如何隐藏或淡出图像(使用 loadImage 创建)?

javascript - ComponentDidUpdate SetState ReactJS 无限循环