如果我有一个 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/