正则表达式模式匹配电话号码扩展名

时间:2015-08-05 16:39:42

标签: regex

我正在尝试匹配电话号码的扩展名。它似乎适用于很多情况,但由于某种原因,它失败了。我无法弄清楚原因。

模式:

/^(\d)?[^\d]*?(\d{3}).*?(\d{3}).*?(\d{4}).*(\d{0,6}).*/

电话价值:

4012538900 (227)

由于某种原因,它与227不匹配。如果我将\d{0,6}更改为\d{3},则似乎没问题,与使用范围\d{1,x}(x> 1)相同。当然,这将打破我的其他价值,因此它不是解决方案。

RegEx101 Demo

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来解决您的问题:

^(\d)?\D*?(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d{0,6})

Updated RegEx Demo

避免在正则表达式中使用.*,因为它也会消耗您的数字,最好使用\D*来匹配非数字。