[英]Javascript Regex- replace sequence of characters with same number of another character
[英]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.