Regex 将电话号码与特定模式匹配的正则表达式

Regex 将电话号码与特定模式匹配的正则表达式,regex,Regex,我希望能够捕捉这些类型的电话格式 +xxx xxx xxx xxx +xxx.xxx.xxx.xxx +xxx xxxxxxxxx +xxx-xxx-xxx-xxx +xxxxxxxxxxxx xxxx xxx xxx xxxx xxxxxx xxxx.xxx.xxx xxxx-xxx-xxx xxx-xxx-xxx xxx.xxx.xxx xxxxxxxxxx xxxx xx xx xx xxxx.xx.xx.xx xxxx-xx-xx-xx 现在我有这个正则表达式 /^[+]?(\d{1,

我希望能够捕捉这些类型的电话格式

+xxx xxx xxx xxx
+xxx.xxx.xxx.xxx
+xxx xxxxxxxxx
+xxx-xxx-xxx-xxx
+xxxxxxxxxxxx
xxxx xxx xxx
xxxx xxxxxx
xxxx.xxx.xxx
xxxx-xxx-xxx
xxx-xxx-xxx
xxx.xxx.xxx
xxxxxxxxxx
xxxx xx xx xx
xxxx.xx.xx.xx
xxxx-xx-xx-xx
现在我有这个正则表达式

/^[+]?(\d{1,2})?[\s.-]?\(?\d{4}\)?[\s.-]?\d{3}[\s.-]?\d{3}$/

它捕获了一些示例,但不知道如何使其也适用于其他格式

这些表达式对设计非常敏感,因为我们所有可能的输入都不在列表中。也许,更好的选择是只允许数字,或者先删除所有非数字字符,然后处理/验证

但是,如果我们只希望根据此处列出的输入进行检查,我们可能会找到一个表达式,可能类似于以下内容:

^[+]?(\d{3,4})[\s.-]?(\d{2,9})?([\s.-])?(\d{2,3})[\s.-]?(\d{2,3})$

正则表达式 如果不需要此表达式,可以在中对其进行修改或更改

正则表达式电路 也有助于将表达式可视化

JavaScript演示 这段代码只是为了说明捕获组是如何工作的:

const regex=/^[+](\d{3,4})[\s.-](\d{2,9})([\s.-])?(\d{2,3})[\s.-](\d{2,3})$/mg;
常量str=`+77777777777
+777.777.777.777
+777 777777777
+777-777-777-777
+777777777777
7777 777 777
7777 777777
7777.777.777
7777-777-777
777-777-777
777.777.777
7777777777
7777 77 77 77
7777.77.77.77
7777-77-77-77`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});

}
只需指出显而易见的一点——用正则表达式验证电话号码可能并不理想。我的标准英国格式的电话号码与上述任何模式都不匹配。显然,这可能与你无关,但以防万一:)是的,这就是我的情况。我相信它不会捕捉到很多其他数字:)