簡體   English   中英

javascript正則表達式-用一個替換所有實例

[英]javascript regex- replace all instances with one

我想將所有XXX/XXX/XXX/ ...替換為一個XXX/

例如:

www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX

應該:

www.domain.com/XXX/section/XXX

我該如何使用正則表達式而不是:

str.replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX");

謝謝

您可以使用正則表達式來匹配所有連續出現兩次或多次重復的/XXX

 var str = "www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX"; var strOut = str.replace(/(\\/XXX){2,}/g, '$1'); console.log(strOut); 

 const input = "www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX"; const expectedOutput = "www.domain.com/XXX/section/XXX" const actualOutput = input.replace(/(\\/XXX)\\1+/g, "$1") console.log("output", actualOutput) 

說明

()將捕獲括號內的匹配項。

\\1$1將使用在第一個捕獲組(本例中為/XXX中捕獲的內容。

+將要求1個或多個重復。

g標志將導致將正則表達式應用於整個字符串,即使之前已找到匹配項也是如此。

整個正則表達式將查找/XXX然后查找另一個/XXX 1次或更多次,然后僅用一個“ / XXX”替換匹配的內容。

嘗試這個:

 var str = "www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX"; str = str.replace(/(XXX\\/*)+/g, "XXX/"); console.log(str); 

嘗試這個

 var url="www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX"; var regexer=/(XXX\\/*)+/g; url = url.replace(regexer, "XXX/"); console.log(url) 

嘗試:

 function processUrl(url) { return url.replace(/www.domain.com(\\/[^/]*)*\\/section(\\/[^/]*)*/g, "www.domain.com$1/section$2"); } console.log(processUrl("www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX")); console.log(processUrl("www.domain.com/XXX/XXX/XXX/XXX/XXX/section/YYY/YYY")); console.log(processUrl("www.domain.com/XXX/XXX/XXX/XXX/section/ZZZ/ZZZ/ZZZ")); 

僅捕獲和輸出首次出現的XXX/*

 var url="www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX"; var re=/(XXX\\/*)+/g; url = url.replace(re, "$1"); console.log(url) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM