我想创建一个正则表达式来验证用户的Oracle数据库新密码
条件:
- 至少8个字符长
- 必须以小写字母开头
- 必须包含至少2位数字
- 必须包含至少1个大写字母
- 下划线是允许的唯一特殊字符_
这是我到目前为止所得到的:
^(?=[a-z])(?=.*[\d]{2,})(?=.*[A-Z]{1,})[0-9a-zA-Z_]{8,}$
测试时工作正常
this site.
在使用REGEXP_LIKE函数在Oracle中测试时不起作用
怎么了?
答案 0 :(得分:0)
请尝试以下操作 长度单独检查。
select
'matched' as STATE
from DUAL
where
length('aAeaasoisd3_f') >= 8 and
regexp_like('aAeaasoisd3_f', '^[a-z]([0-9a-zA-Z_]*[0-9][0-9a-zA-Z_]*[0-9][0-9a-zA-Z_]*[A-Z][0-9a-zA-Z_]*|[0-9a-zA-Z_]*[A-Z][0-9a-zA-Z_]*[0-9][0-9a-zA-Z_]*[0-9][0-9a-zA-Z_]*|[0-9a-zA-Z_]*[0-9][0-9a-zA-Z_]*[A-Z][0-9a-zA-Z_]*[0-9][0-9a-zA-Z_]*)');
通过将可能性划分为
来实现这一目标^[a-z]X where X could be one of
...\d...\d...[A-Z]...
...[A-Z]...\d...\d...
...\d...[A-Z]...\d...
and ... is [0-9a-zA-Z_]*