首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有效美国电话号码的正则表达式

有效美国电话号码的正则表达式
EN

Stack Overflow用户
提问于 2017-08-15 19:06:25
回答 1查看 549关注 0票数 1

我试图从错误的电话号码条目中清除一组数据。在MySQL中无法为过滤器生成正则表达式。

结构如下:

第一个数字是2-9。

第二位和第三位数字可以是任何数字,但它们可能不是相同的数字。

四位数是2-9。

第五位和第六位可以是除'11‘以外的任何数字。

我已经找到了一些非常精细的reg表达式,但是我确信这是一种简单的方法。

“有效”数字看起来可能如下:

2028658680

7137038891

我的过滤器通常漏掉以下情况:

6778914351

7777777777

6178116678

请注意,这些数字是完全合成的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-15 22:08:53

这是可能的,但它将是漫长而丑陋的。使用更健壮的regex引擎,您可以进行查找,甚至条件语句,但据我所知,MySQL不支持这些内容。

^[2-9](?:0[1-9]|1[02-9]|2[013-9]|3[0-24-9]|4[0-35-9]|5[0-46-9]|6[0-57-9]|7[0-689]|8[0-79]|9[0-8])[2-9](?:1[02-9]|[02-9]1|[02-9]{2})[0-9]{4}$

https://regex101.com/r/qPuS5W/1

解释:

[2-9]第一个数字是从2到9的任意数字。

(?:0[1-9]|1[02-9]|2[013-9]|3[0-24-9]|4[0-35-9]|5[0-46-9]|6[0-57-9]|7[0-689]|8[0-79]|9[0-8])非捕获组,包含10个选项,从每个数字0到9开始,后面跟着除该数字之外的任何数字。

(?:1[02-9]|[02-9]1|[02-9]{2})非捕获组,它匹配1后面的数字不等于1,数字不是1后面的1,或者两个数字不是1。

任何数字的[0-9]{4} 4。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45699789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档