javascript - 如何使用正则表达式(Regex)从字符串中获取电话号码?

标签 javascript regex

我想要正则表达式,它通过忽略空格、加号 (+)、括号和破折号来找出最多 12 位长的数字,例如:

Primary contact number +91 98333332343 call me on this
My number is +91-983 333 32343
2nd number +1 (983) 333 32343, call me
Another one 983-333-32343
One more +91(983)-333-32343 that's all
121 street pin code 421 728 & number is 9833636363

目前,我有一个正则表达式,它负责从字符串中获取联系电话:

/* This only work for the first case not for any other
   and for last one it outputs "121" */

\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+

那么这里可以做些什么来支持上述所有情况,简而言之,忽略特殊字符,长度应在 10-12 之间。

最佳答案

我看到有 10 到 13 位的数字。

你可以使用

/(?:[-+() ]*\d){10,13}/g

参见 regex demo .

详细信息:

  • (?:[-+() ]*\d){10,13} - 匹配 10 到 13 个序列:
    • [-+() ]* - 零个或多个字符 -, +, (, ), 或者一个空格
    • \d - 一个数字

var re = /(?:[-+() ]*\d){10,13}/gm; 
var str = 'Primary contact number +91 98333332343 call me on this\nMy number is +91-983 333 32343\n2nd number +1 (983) 333 32343, call me\nAnother one 983-333-32343\nOne more +91(983)-333-32343 that\'s all\n121 street pin code 421 728 & number is 9833636363';
var res = str.match(re).map(function(s){return s.trim();});
console.log(res);
 

关于javascript - 如何使用正则表达式(Regex)从字符串中获取电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587157/

相关文章:

javascript - javascript中多个匹配项的正则表达式组

Javascript/Jquery委托(delegate)点击触发视频功能两次

php - 日期范围谷歌图表工具

javascript - 文本闪烁 jQuery

regex - R:反斜线(\)

regex - 使用 awk 打印正则表达式组的长度

javascript - Bootstrap 4 - 使下拉列表的父级成为可点击的链接

javascript - SSE 与刷新 js 命令?

javascript - 正则表达式查找字符串末尾的单词

regex - Perl 正则表达式匹配模式的多个实例并替换