正则表达式中的OR子句

时间:2014-09-21 15:12:33

标签: sql regex oracle

我正在尝试验证可能出现以下两种形式的电话号码

123.231.457或011.44.321.326589

我试图使用REGEXP_LIKE来验证它。但是我想知道我们是否可以在regexp_like中使用OR子句?

这是我的代码

select count(1) digit_count
from dual 
where regexp_like(l_phone_no,'[0-9]{3}.[0-9]{3}.[0-9]{4}');

适用于 123.231.4575 形式的电话号码。

2 个答案:

答案 0 :(得分:2)

您可以将正则表达式匹配组与其本机OR (regex1|regex2)

一起使用

([0-9]{3}\.[0-9]{3}\.[0-9]{4}|[0-9]{3}\.[0-9]{2}\.[0-9]{4}\.[0-9]{6})

并转义点以实际匹配点而不是任何字符

答案 1 :(得分:0)

作为注释,正则表达式中的.匹配任何字符。你应该逃避它,所以正则表达式看起来应该更像:

where regexp_like(l_phone_no,'[0-9]{3}[.][0-9]{3}[.][0-9]{4}');

这也适用于评论中的表达。