我正在写一些regex +查询来匹配美国的电话号码。从regex的角度验证下面的负展望,但由于不支持负查找,因此在Oracle中不起作用。有人能帮我修改查询以便在Oracle中工作吗?
select 'match' from dual WHERE REGEXP_LIKE('16665555555', '^1?(?!911)[2-9][0-9]{9}$');它不返回与甲骨文中任何数字的匹配。
谢谢你,安迪
发布于 2013-07-29 11:30:02
WHERE REGEXP_LIKE(phone, '^1?[2-9]\d{9}$') and not REGEXP_LIKE(phone, '^1?911')发布于 2018-07-24 21:57:04
我认为接受的答案是最好和最清晰的方式来做到这一点。但仅供参考,这种情况下的另一种选择是将您想要的前三个字符(在可选的“1”之后)的限制结合起来,并使用替换来覆盖所有可能允许的情况。
在这种情况下,我们可以涵盖前三个字符(可选“1”之后)的所有可能允许的情况,有三种可能性:
e 225 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}$');https://stackoverflow.com/questions/17922661
复制相似问题