簡體   English   中英

如何正則表達式用匹配的 2 個單詞替換查詢字符串?

[英]How to regex replace a query string with matching 2 words?

我有一個 url,我想替換查詢字符串。 例如

www.test.com/is/images/383773?wid=200&hei=200

我想匹配wid=hei=並且數字不必是200來替換整個東西,所以它應該看起來像這樣。

預計www.test.com/is/images/383773?@HT_dtImage

所以我試過做,但它只替換了匹配的weihei

const url = "www.test.com/is/images/383773?wid=200&hei=200"

url.replace(/(wid)(hei)_[^\&]+/, "@HT_dtImage")

我會在這里使用字符串拆分:

 var url = "www.test.com/is/images/383773?wid=200&hei=200"; var output = url.split("?")[0] + "?@HT_dtImage"; console.log(output);

如果您只想定位同時具有鍵widhei的查詢字符串,則使用正則表達式方法:

 var url = "www.test.com/is/images/383773?wid=200&hei=200"; var output = url.replace(/(.*)\?(?=.*\bwid=\d+)(?=.*\bhei=\d+).*/, "$1?@HT_dtImage"); console.log(output);

您可以使用正則表達式/\?.*/

在此處輸入圖像描述

 const url = 'www.test.com/is/images/383773?wid=200&hei=200'; const result = url.replace(/\?.*/, '?@HT_dtImage'); console.log(result);

您可以匹配 wid= 或 hei= 直到下一個可選的&符號,然后刪除這些匹配項,然后 append @HT_dtImage到結果。

\b(?:wid|hei)=[^&]*&?

模式匹配:

  • \b防止部分單詞匹配的單詞邊界
  • (?:wid|hei)=非捕獲組,匹配widhei后跟=
  • [^&]*&? 匹配除&以外的字符 0+ 次,然后匹配可選的&

查看正則表達式演示

 let url = "www.test.com/is/images/383773?wid=200&hei=200" url = url.replace(/\b(?:wid|hei)=[^&]*&?/g, "") + "@HT_dtImage"; console.log(url)

試試url.replace(/\?.*/, "?@HT_dtImage")

暫無
暫無

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

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