Regex Oracle正则表达式替换负前瞻
我正在写一些regex+查询来匹配我们的电话号码。下面带有负前瞻性的一个可以从正则表达式的角度进行验证,但在Oracle中不起作用,因为不支持负前瞻性。有人能帮我修改查询以在Oracle中工作吗Regex Oracle正则表达式替换负前瞻,regex,oracle,Regex,Oracle,我正在写一些regex+查询来匹配我们的电话号码。下面带有负前瞻性的一个可以从正则表达式的角度进行验证,但在Oracle中不起作用,因为不支持负前瞻性。有人能帮我修改查询以在Oracle中工作吗 select 'match' from dual WHERE REGEXP_LIKE('16665555555', '^1?(?!911)[2-9][0-9]{9}$'); 它不会返回oracle中任何数字的匹配项 谢谢, 安迪我认为公认的答案是实现这一目标的最好、最清晰的方法。但仅供参考,对于这种情
select 'match' from dual WHERE REGEXP_LIKE('16665555555', '^1?(?!911)[2-9][0-9]{9}$');
它不会返回oracle中任何数字的匹配项
谢谢,
安迪我认为公认的答案是实现这一目标的最好、最清晰的方法。但仅供参考,对于这种情况,另一种选择是将前三个字符(在可选的“1”之后)上的限制组合起来,并使用交替覆盖所有可能允许的情况 在这种情况下,我们可以覆盖前三个字符(可选“1”之后)的所有可能允许的情况,包括三种可能性:
select 'match' from dual WHERE REGEXP_LIKE('9115555555', '^1?([2-8][0-9]{2}|9[02-9][0-9]|91[02-9])[2-9][0-9]{6}$');
select 'match' from dual WHERE REGEXP_LIKE('9115555555', '^1?([2-8][0-9]{2}|9[02-9][0-9]|91[02-9])[2-9][0-9]{6}$');