用javascript和正则表达式替换内部文本

时间:2011-07-07 10:19:03

标签: javascript regex

我正在尝试修改包含一些特殊标记的文本。我相信它应该可以通过一个正则表达式,但我被卡住了......

我想做的更容易通过一个例子来解释:

如果我有这个文字:

  

{Lorem Ipsum}简直就是{虚文}   印刷和排版行业。

我希望结果如下:

<span>Lorem Ipsum</span> is <span>simply dummy</span> text of the printing and typesetting industry.

我遇到},之前没有匹配{,那么应该忽略它。

我知道我可以将所有内部文本与此\{(.*?)\}匹配,但如果继续进行,则会失去任何帮助。

3 个答案:

答案 0 :(得分:6)

你很亲密。

text = text.replace(/{(.*?)}/g, '<span>$1</span>')

应该做的伎俩。 g修饰符使replace替换每种模式,$1引用第一个捕获组的内容。

顺便说一下。由于{}不是特殊构造,因此在此处不必转义{(.*?)}。为了清楚起见,最好还是逃避它们。

有关MDN documentation中JavaScript中正则表达式的更多信息。

答案 1 :(得分:1)

更好的方法是匹配\{([^{}]*)\}。这确保了只有最里面的一对支架匹配;不平衡的比赛是不可能的。

result = subject.replace(/\{([^{}]*)\}/g, "<span>$1</span>");

但是,如果可以嵌套括号,则必须多次应用。当然,它不会检查这些括号是否出现在评论,引号等中。

答案 2 :(得分:0)

var str = '{Lorem Ipsum} is simply {dummy text} of the printing and typesetting industry.';
var spanStr = str.replace(/{(.*?)}/g, '<span>$1</span>');