限制正则​​表达式中的数字长度

时间:2014-04-24 11:02:53

标签: php regex phone-number

以下是验证电话号码的正则表达式。

((^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$)|(\(?[2-9][0-8][0-9]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}))|(?:\((\+?\d+)?\)|(\+\d{0,3}))? ?\d{2,3}([-\.]?\d{2,3} ?){3,4}

Here is the link for regex check http://regex101.com/r/xO4aU4

它验证了英国的美国数字。数字范围的下限为7,上限不受限制。

我可以限制它,以便如果该数字的范围小于7或大于14那么它根本不应该过滤该数字。

1 个答案:

答案 0 :(得分:0)

(\+44)?\s?\(?0?\d{1,5}\)?\s\d{1,7}\s{0,1}\d{0,6}(?:\s-\s|\s)\s{0,2}\d{0,6}|(\+44)?\s?\(?\d{1,5}\)?\s\d{1,7}\s{0,1}\d{0,4}\s{0,1}\d{0,4}|(\+44)?\s?\(\d{1,5}\)\s?\d{3,7}\s?\d{0,4}\s?\d{0,4}|\d{4,5}\s*\d{3,5}\s\d{3,4} 

这是我用于英国电话号码(固定电话)的正则表达式< - 它用于屏幕抓取网站,因此它可能更强大并且匹配边缘情况(例如放置+44(0)1772的人99 33 66) - 它与字符串长度检查一起使用并且不考虑分机号码 - 但是你应该将分机号码作为单独的字段。

我不知道美国的数字,所以抱歉无法帮助那里!