首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RegEx:匹配两个模式中的一个

RegEx:匹配两个模式中的一个
EN

Stack Overflow用户
提问于 2014-12-22 23:52:01
回答 3查看 39.7K关注 0票数 22

我有两个正则表达式,一个用于验证手机号码,另一个用于房屋电话号码。

手机号码模式:

代码语言:javascript
运行
复制
^((07|00447|\+447)\d{9}|(08|003538|\+3538)\d{8,9})$

家庭号码模式:

代码语言:javascript
运行
复制
((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})$

有没有办法将这两个表达式组合在一起,这样我就可以将它们应用于'Contact Number‘字段,如果输入匹配其中任何一个表达式,该字段将是有效的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-22 23:55:03

将两个正则表达式放入由交替操作符|分隔的非捕获组中。

代码语言:javascript
运行
复制
^(?:((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}))$
票数 30
EN

Stack Overflow用户

发布于 2014-12-22 23:55:42

将它们与管道相结合,这就是or运算符。

代码语言:javascript
运行
复制
^((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})$
票数 6
EN

Stack Overflow用户

发布于 2014-12-22 23:55:18

您可能必须在|条件下不捕获组:

代码语言:javascript
运行
复制
^(?:(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})$
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27605991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档