簡體   English   中英

如何使用javascript正則表達式刪除部分字符串而不重復分隔字符串

[英]How to remove part of string with javascript regex without repeating delimiting strings

我希望在兩個已知子字符串( <foo></foo> )之間刪除未知子字符串。 例如,我想轉換:

hello <foo>remove me</foo>

至:

hello <foo></foo>

我可以這樣做:

s = ...
s.replace(/<foo>.*?<\/foo>/, '<foo></foo>')

但我想知道是否有辦法在不重復正則表達式和替換文本中的已知子串( <foo></foo> )的情況下執行此操作。

您可以捕獲captured group標記,並在以后將其用作后向引用:

var repl = s.replace(/<(foo)>.*?<\/\1>/, '<$1></$1>');
//=> hello <foo></foo>

注意\\1$1是對捕獲的組#1的反向引用。

在此輸入圖像描述

使用分組嘗試以下正則表達式。

(?:<foo>)(.*?<\/foo>)

regex101在線演示

圖示Debuggex演示

在此輸入圖像描述

示例代碼:

var re = /(?:<foo>)(.*?<\/foo>)/;
var str = 'hello <foo>remove me</foo>';
var subst = '<foo></foo>';

var result = str.replace(re, subst);

輸出:

hello <foo></foo>

暫無
暫無

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

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