我有一个指标来匹配美国的数字:
\(?[2-9][0-8][0-9]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}虽然我检查前三位数字作为我们的号码,但我有很少的区号,并希望只过滤这个区号麻木。
$area_code = array(201,202,203,2,04);只允许在此数组值中包含前三位数的数字。需要什么修改规则?
发布于 2014-04-25 12:15:35
使用implode()将数字与分隔符|连接起来,并在正则表达式中使用它:
$area_code = array(201,202,203,204);
$p = implode('|', $area_code);
$pattern = '/\(?(?:'.$p.')\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}/';生成的regex如下所示:
\(?(?:201|202|203|2|4)\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}如果它们以$area_code数组中的值之一开头,它将与数字匹配。与另一种方法相比,这种方法的优点是它允许您添加不遵循任何特定模式的自定义数字。缺点是,如果数组中有很多数字,它可能会变慢。
Regex101演示
发布于 2014-04-25 12:13:42
以下正则表达式应可用于您的目的:
\(?20[1-4]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}https://stackoverflow.com/questions/23292786
复制相似问题