为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2022-08-27 14:51:59
在 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和所有内容,包括“(主要)”我已经搜索了如何用捕获组替换整个字符串,但我还没有弄清楚。
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

您可以使用


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)

  • [^]*- 字符串的其余部分。

请参阅正则表达式演示


查看完整回答
反对 回复 2022-08-27
?
RISEBY

TA贡献1856条经验 获得超5个赞

这对你有用吗?


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)


查看完整回答
反对 回复 2022-08-27
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号