如何使用正则表达式获得以下结果?

时间:2019-02-01 23:04:19

标签: javascript node.js regex

我想与下面的正则表达式如下来提取电话号码:

/(?:(\+?\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

因此,我想感谢您的支持。

5 个答案:

答案 0 :(得分:4)

您也可以直接替换所有非数字

 const str = "my number is 2435 6546 56756765";
 const num = str.replace(/\D/g, "");
 console.log(num);

答案 1 :(得分:2)

由于您要在正则表达式中使用空格,因此在使用str.replace(/\s/g, '');获得结果时应删除它们。

答案 2 :(得分:1)

许多方法可以做到这一点。这是一个古老的循环-和一个不同的,效率较低的书面表达方式。

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, ""))
}

答案 3 :(得分:1)

给定正则表达式的结构似乎与给定示例不太吻合。这些数字用空格隔开,至少包含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, '')))

答案 4 :(得分:0)

const str = "my number is 2435 6546 56756765"; 
const num = str.replace(/[\D\s]*/g, ""); console.log(num);

它将替换非数字字母和空格字符。