我希望正则表达式通过忽略空格,加上(+),括号和&来找出最长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之间。
答案 0 :(得分:5)
我看到有10到13位数字。
您可以使用
(?:[-+() ]*\d){10,13}
请参阅regex demo。
<强>详情:
[-+() ]*
- 匹配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);
- 数字
{{1}}
答案 1 :(得分:0)
接受的答案符合您的标准,但我想提出一种更严格的方法。它非常特定于您提供的数字格式:
/^(\+(\d{1,2})[- ]?)?(\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4,5}$/
/(\+(\d{1,2})[- ]?)?(\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4,5}/
我让你成了一个小小提琴,你可以在任意数量的......好的数字上试用不同的正则数:https://jsfiddle.net/u51xrcox/5/。
玩得开心。