用正则表达式构造匹配:
密码必须由数字、字符、特殊字符三种同时存在组成;
密码长度不能少于8个字符;
@菩提旭光 的思路是对的,把negative lookahead换成positive lookahead,再稍微调整一下就行了。
(?=.\d.)(?=.[a-zA-Z].)(?=.[_#@].).{8,}
我觉得这个问题不应该用正则表达式来解决,每种工具都有非常适合使用的场景,我觉得在你这个场景里面并不适合用正则表达式去解决,用简单的if语句去判断,实现简单,而且可读性非常好,为什么一定要用正则表达式呢!?
var regex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}');
console.log(regex.test('a12345-7'));
3 回答2.6k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.6k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决