结合regex验证英国和美国的电话号码


Combining regex to validate UK and US phone number

我有两个正则表达式。一个验证英国号码(来自我之前的问题),另一个验证美国号码:

  1. ^'(?(?:(?: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. /'(?[2-9][0-8][0-9]')?[-. ]?[0-9]{3}[-. ]?[0-9]{4}/

我想把这两者结合起来,这样我就可以验证任何美国或英国的号码。

|操作是否足够?

在这里,我使用|将两者组合在一起,但它不能验证数字:

http://regex101.com/r/wD4dI9

是的,您的|运算符应该对此很好。它看起来是这样的:

/((^'(?(?:(?: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}))/

它适用于您问题中的regex演示:http://regex101.com/r/zX2cE5