javascript - 正则表达式 : Look up non-formatted phone number with formatted number

标签 javascript regex

如果我有一个 E.164 格式的电话号码,并且我想查找具有该电话号码的任何用户,尽管他们的号码可能没有格式化,那么该正则表达式会是什么样子?

示例:

给定:

+1234567891

正则表达式应匹配以下任意一项:

(123) 456 7891

123-456-7891

+1234567891

123.456.7891

1234567891

以上任何带有尾随或前导空格的内容。

最佳答案

var str = '+1234567891',
    parts = str.match(/\+((\d{3})(\d{3})(\d{4}))/).slice(1),
    num = parts.shift(),
    rg = new RegExp(
      '\\s*(?:\\+?' + [
        num,
        parts.join('.'),
        parts.join('-'),
        '\\(' + parts[0] + '\\) ' + parts.slice(1).join(' ')
      ].join('|') + ')\\s*');

在这种情况下,它将产生

/\s*(?:\+?1234567891|123.456.7891|123-456-7891|\(123\) 456 7891)\s*/

关于javascript - 正则表达式 : Look up non-formatted phone number with formatted number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687741/

相关文章:

c# - 搜索以 c# regex 开头和结尾的所有字符串

php - JavaScript 正则表达式表单验证失败

javascript - js Canvas 堆叠顺序

javascript - 根据条件设置单元格值

c# - 获取字符串中格式说明符的数量?

javascript - Tampermonkey 匹配所有子目录

python - 在python中,如何使用正则表达式进行有条件的模式匹配

php - $_SESSION 变量选择性加载

javascript - 如何在 .aspx 文件上使用 Javascript 检查超时值后调用 .ascx 按钮单击事件

javascript - Expressjs MVC 在路由器中无法让 listAll() 从 mongoose 返回数据