首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用javascript和正则表达式替换内部文本

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

Stack Overflow用户
提问于 2011-07-07 18:19:03
回答 3查看 1.3K关注 0票数 1

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

我想要做的事情更容易用一个例子来解释:

如果我有这样的文本:

{Lorem Ipsum}只是印刷和排版行业的{虚拟文本}。

我想要的结果是:

代码语言:javascript
复制
<span>Lorem Ipsum</span> is <span>simply dummy</span> text of the printing and typesetting industry.

如果遇到之前没有匹配{},则应该忽略它。

我知道我可以匹配所有的内部文本与这个\{(.*?)\},但迷失了如何继续,任何帮助将是值得的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-07 18:21:39

你已经很接近了。

代码语言:javascript
复制
text = text.replace(/{(.*?)}/g, '<span>$1</span>')

应该能行得通。g修饰符使replace替换模式的每个匹配项,$1引用第一个捕获组的内容。

顺便说一句。这里没有必要转义{},因为{(.*?)}不是一个特殊的构造。为了清晰起见,还是避开它们可能会更好。

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

票数 5
EN

Stack Overflow用户

发布于 2011-07-07 18:23:49

更好的方法是匹配\{([^{}]*)\}。这确保了只匹配最里面的大括号对;这种不平衡的匹配是不可能的。

代码语言:javascript
复制
result = subject.replace(/\{([^{}]*)\}/g, "<span>$1</span>");

但是,如果可以嵌套大括号,则必须多次应用此方法。当然,它不会检查这些大括号是否出现在注释、引号等中。

票数 1
EN

Stack Overflow用户

发布于 2011-07-07 18:21:55

代码语言:javascript
复制
var str = '{Lorem Ipsum} is simply {dummy text} of the printing and typesetting industry.';
var spanStr = str.replace(/{(.*?)}/g, '<span>$1</span>');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6609063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档