我想用正则表达式如下如下提取电话号码:
/(?:(\+?\d{1,3}) )?(?:([\(]?\d+[\)]?)[ -])?(\d{1,5}[\- ]?\d{1,5})/
使用这些测试案例:
"my number is 2435 6546 56756765"
"my complete number is 55 40 60 5585"
我有:
2435 6546 56756
不过,我需要的数字,具体如下:
2435654656756765
5540605585
所以,我想欣赏支持。
给定的正则表达式的结构似乎并没有很好适应与给定的例子。的数字被用空格隔开,含有至少2位数字,并重复2 - 3次。
你可能做的是匹配模式和后删除空格字符。
const regex = /\d{2,}(?: \d{2,}){2,3}/g;
[
"my number is 2435 6546 56756765",
"my complete number is 55 40 60 5585"
].forEach(s => console.log(s.match(regex)[0].replace(/\s+/g, '')))
您还可以直接替换所有非数字
const str = "my number is 2435 6546 56756765";
const num = str.replace(/\D/g, "");
console.log(num);
既然你在你的正则表达式服用空间,当你与str.replace(/\s/g, '');
的结果,你应该删除它们。
很多方法可以做到这一点。这里是一个老同学的循环 - 和不同的,效率较低,书面表达。
var strs =["my number is 2435 6546 56756765",
"my complete number is 55 40 60 5585"]
for(let i = 0; i < strs.length; i++){
console.log(strs[i].replace(/([a-z]{1,})?(\s)/g, ""))
}
const str = "my number is 2435 6546 56756765";
const num = str.replace(/[\D\s]*/g, ""); console.log(num);
它将取代非数字字母和空格字符。