如何实现使用正则表达式以下结果?

问题描述 投票:0回答:5

我想用正则表达式如下如下提取电话号码:

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

所以,我想欣赏支持。

javascript node.js regex
5个回答
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
投票

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

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

2
投票

既然你在你的正则表达式服用空间,当你与str.replace(/\s/g, '');的结果,你应该删除它们。


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

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

它将取代非数字字母和空格字符。

© www.soinside.com 2019 - 2024. All rights reserved.