我的标题听起来很复杂,所以我会尝试通过举例来简化它
我有这些自制标签,如
{tag}tagtext{tag}
我试图将其改为
<span>same tagtext</span>
我尝试使用正则表达式,但我无法弄清楚如何在标签之间获取文本,然后将标签更改为其他内容。
我用
标记了标签之间的文字string.match('{tag}(.*){tag}');
此外,所有标签都是相同的,由于某种原因,匹配功能只给出了它找到的第一个结果。我想这与我的正则表达式有关。
另外我不想用循环来做它,因为它将开始作为实时编辑器工作,我需要保持性能快速。
答案 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?