RegEx:匹配两种模式中的一种

Leo*_*tch 9 regex

我有两个正则表达式,一个用于验证手机号码,另一个用于家庭电话号码.

手机号码模式:

^((07|00447|\+447)\d{9}|(08|003538|\+3538)\d{8,9})$
Run Code Online (Sandbox Code Playgroud)

家庭号码模式:

((0|0044|\+44)\d{10}|(08)\d{9}|(90)\d{6}|(92)\d{6}|(437)\d{5}|(28)\d{6}|(37)\d{6}|(66)\d{6}|(82)\d{6}|(777)\d{5}|(93)\d{6})$
Run Code Online (Sandbox Code Playgroud)

有没有办法结合这两个表达式,以便我可以将它们应用于"联系号码"字段,如果输入匹配任一表达式,该字段将是有效的?

Avi*_*Raj 13

将两个正则表达式放入由交替运算符分隔的非捕获组中|.

^(?:((07|00447|\+447)\d{9}|(08|003538|\+3538)\d{8,9})|((0|0044|\+44)\d{10}|(08)\d{9}|(90)\d{6}|(92)\d{6}|(437)\d{5}|(28)\d{6}|(37)\d{6}|(66)\d{6}|(82)\d{6}|(777)\d{5}|(93)\d{6}))$
Run Code Online (Sandbox Code Playgroud)


Mou*_*ser 6

将它们与管道结合起来,它是 or 运算符。

^((07|00447|\+447)\d{9}|(08|003538|\+3538)\d{8,9})|((0|0044|\+44)\d{10}|(08)\d{9}|(90)\d{6}|(92)\d{6}|(437)\d{5}|(28)\d{6}|(37)\d{6}|(66)\d{6}|(82)\d{6}|(777)\d{5}|(93)\d{6})$
Run Code Online (Sandbox Code Playgroud)