使用javascript查找和删除所有出现的短代码

时间:2013-11-29 08:29:38

标签: javascript regex shortcode

我有这个用于wordpress的短代码。

[shortcodename code="dhgsfy87djh" time="2"][/shortcodename]

此模式可能会在textarea中出现多次。我需要在文本区域中删除所有出现的此模式。问题是 - 我不是一个前任的人。请建议正则表达式使用javasript删除所有出现的此模式。

例如,内容可能是这样的:

[shortcodename code="dhgsfy87djh" time="2"][/shortcodename] [shortcodename code="hdfds8f7684768" time="5"][/shortcodename] blah blah [shortcodename code="df87s8bdf78sd" time="8"][/shortcodename]

![这是怎么回事] [1]

http://s9.postimg.org/em9myvz1r/snap.png

由于我真的不知道为什么这个问题被投了票,我假设这里有人是einstien,我绝对不会竞争。

所以请再看一下图片。说这是wordpress评论框。现在我只需要出现一次短代码。那也只是一开始。说一些副本粘贴在这里和那里我想要剥离它。然后我只在顶部添加一个。

我正在做的添加部分,但剥离我不知道。我使用了一些reg ex,但它在php preg_match中工作,但它在javascript中不起作用。

这就是我使用的。

/(^ [shortcodename [])。([] *)。(code = \“someprefix _)。([A-Za-z0-9] +)。([] )。(time = \ “(\ d )\”)(] )([/ shortcodename])/ I;

这是我在stackoverflow上回答的第一个问题,所以我请求大家对我一点耐心。如果你不知道答案,请不要投票,说“我不知道”或“我不明白”或“提供更多信息”。

现在请帮助我。

3 个答案:

答案 0 :(得分:2)

试试这个,它会确保只删除匹配的[tag] [/ tag],但不会删除[a] cc [/ b]

text = text.replace(/\[(\S+)[^\]]*][^\[]*\[\/\1\]/g, '');

http://jsfiddle.net/Z2ZVk/1/

答案 1 :(得分:1)

/\[[^\[]*shortcodename[^\]]*\]/ig

应该适合你。当然假设您的包装模式是相同的。

/ i标志将允许不区分大小写的匹配,并且/ g标志将确保替换所有匹配。

注意:这也会删除短信代码包装内的内容

您可以在此处查看一个有效的示例:regex101.com/r/tB5nG2

编辑:鉴于您的问题的性质,我怀疑您尝试匹配的内容远远超过您提供的示例。尝试提供更广泛的例子,我们可以增强我们各自的答案。

答案 2 :(得分:0)

这应该有效:

text.replace(/\[.*?\]/g, "")