使用标记之间的文本更改标记

时间:2018-01-04 01:27:57

标签: javascript regex

我的标题听起来很复杂,所以我会尝试通过举例来简化它

我有这些自制标签,如

{tag}tagtext{tag}

我试图将其改为

<span>same tagtext</span>

我尝试使用正则表达式,但我无法弄清楚如何在标签之间获取文本,然后将标签更改为其他内容。

我用

标记了标签之间的文字
string.match('{tag}(.*){tag}');

此外,所有标签都是相同的,由于某种原因,匹配功能只给出了它找到的第一个结果。我想这与我的正则表达式有关。

另外我不想用循环来做它,因为它将开始作为实时编辑器工作,我需要保持性能快速。

2 个答案:

答案 0 :(得分:1)

/(\{tag\})(.*?)\1/g
 ^^^^^^^^^  ^^ ^^ ^  
    1        2  3 4
1: Match tag and put in group 1
2: *? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)
3: matches the same text as most recently matched by the 1st capturing group
4: Global pattern flags, all matches.

var temp = "{tag}tagtext1{tag}{tag}tagtext2{tag}\n{tag}tagtext3{tag}{tag}tagtext4{tag}";
console.log(temp.replace(/(\{tag\})(.*?)\1/g,"<span>$2</span>"));

这是你期望的结果吗?

<span>tagtext1</span><span>tagtext2</span>
<span>tagtext3</span><span>tagtext4</span>

答案 1 :(得分:0)

您必须在RegEx表达式之后使用全局修饰符或g才能启用所有匹配项。您使用什么语言进行RegEx?