亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在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 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號