首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式中前三个数字的匹配

正则表达式中前三个数字的匹配
EN

Stack Overflow用户
提问于 2014-04-25 12:11:39
回答 2查看 406关注 0票数 0

我有一个指标来匹配美国的数字:

代码语言:javascript
复制
\(?[2-9][0-8][0-9]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}

虽然我检查前三位数字作为我们的号码,但我有很少的区号,并希望只过滤这个区号麻木。

代码语言:javascript
复制
$area_code = array(201,202,203,2,04);

只允许在此数组值中包含前三位数的数字。需要什么修改规则?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-25 12:15:35

使用implode()将数字与分隔符|连接起来,并在正则表达式中使用它:

代码语言:javascript
复制
$area_code = array(201,202,203,204);
$p = implode('|', $area_code);
$pattern = '/\(?(?:'.$p.')\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}/';

生成的regex如下所示:

代码语言:javascript
复制
\(?(?:201|202|203|2|4)\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}

如果它们以$area_code数组中的值之一开头,它将与数字匹配。与另一种方法相比,这种方法的优点是它允许您添加不遵循任何特定模式的自定义数字。缺点是,如果数组中有很多数字,它可能会变慢。

Regex101演示

票数 1
EN

Stack Overflow用户

发布于 2014-04-25 12:13:42

以下正则表达式应可用于您的目的:

代码语言:javascript
复制
\(?20[1-4]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23292786

复制
相关文章

相似问题

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