如何在JavaScript中用正则表达式捕获组替换整个字符串?

在 NodeJS 应用程序中,我的数据中有一个电话号码字段,该字段以相同的字符串一个接一个地显示任意数量的电话号码:

\n\n  \n  (555) 555-5555 (Main)\n\n, \n\n  \n  (777) 777-777 (Domestic Fax)\n\n

我只想提取“主”电话号码并将其转换为格式,即主号码是什么。基本上,我只想提取“Main”之前的任何数字,并使其更清晰(用“-”替换空格)555-555-5555

我找到了正确的正则表达式字符串

const phoneRegex = /^[ \\n]*\(([0-9]{3})\)( )([0-9]{3}-[0-9]{4}) \(Main\).*$/

但是当我尝试替换字符串时,它不起作用

foo.phone =foo.phone.replace(phoneRegex,'$1-$3')

我不断获得整个匹配部分 - 这是所有\n和所有内容,包括“(主要)”

我已经搜索了如何用捕获组替换整个字符串,但我还没有弄清楚。


呼如林
浏览 171回答 2
2回答

GCT1015

您可以使用var s = "\\n\\n  \\n  (555) 555-5555 (Main)\\n\\n, \\n\\n  \\n  (777) 777-777 (Domestic Fax)\\n\\n";console.log(  s.replace(/^[^]*?\((\d{3})\)\s*(\d+)-(\d+)\s*\(Main\)[^]*/, '$1-$2-$3'));详^- 字符串的开头[^]*?- 任何0或更多字符,尽可能少\(- 一((\d{3})- 第1组:三位数字\)- 一个字符)\s*- 0+ 空格(\d+)- 组 2:一个或多个数字-- 一个连字符(\d+)- 第3组:一个或多个数字\s*- 0+ 空格\(Main\)- 一个字符串(Main)[^]*- 字符串的其余部分。请参阅正则表达式演示。

RISEBY

这对你有用吗?const str = `\n\n  \n  (555) 555-5555 (Main)\n\n, \n\n  \n  (777) 777-777 (Domestic Fax)\n\n`,      [,code, phone] = str.match(/\((\d{3})\)\s(\d{3}\-\d{4})\s\(Main\)/),      result = `${code}-${phone}`      console.log(result)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript