我需要使用regexp_like在pl-sql中使用密码的正则表达式

时间:2014-07-18 05:22:58

标签: regex plsql oracle11g

Regexp必须执行这些规则

  1. 第一个符号必须只是大写或小写字母
  2. 密码长度必须至少为8个字符
  3. 密码必须包含至少一个数字,大写和小写字母
  4. 密码不得包含空格和特殊字符

1 个答案:

答案 0 :(得分:2)

Oracle不支持外观。因此,如果您想使用REGEXP_LIKE,我们需要将其拆分为两个正则表达式:

SELECT * FROM mytable 
WHERE REGEXP_LIKE(mycolumn, '^.*[0-9]', 'c')
AND REGEXP_LIKE(mycolumn, '^[a-zA-Z][a-zA-Z0-9]{7,}$', 'c');

<强>解释

  • ^.*[0-9]确保至少有一位数字
  • ^锚点断言我们位于字符串的开头
  • [a-zA-Z]匹配首字母
  • [a-zA-Z0-9]{7,}匹配7个或更多字符(确保总数为8个或更多),即ASCII字母或数字
  • $锚点断言我们位于字符串的末尾