使用正则表达式删除空bbcode标记

时间:2013-05-27 22:55:53

标签: regex bbcode

使用正则表达式我试图删除空的bbcode标签。空的我在他们之间没有任何意义:

[tag][/tag]

如果他们之间有什么东西,那就应该保留。

我经常搜索并使用正则表达式测试器,但没有提出任何正常工作。

编辑:我现在意识到为什么我很难过。除了上面的例子,我也有一个像:

[url=http://www.somedomain.com/][/url]

我正在尝试在提交表单时清理bbcode,因此它不会被存储,因为它不需要。

2 个答案:

答案 0 :(得分:0)

在Javascript中,你可以这样做:

str.replace(/\[([^\[\]]*)\]\[\/\1\]/g, '');

答案 1 :(得分:0)

在这种情况下正则表达式的操作方面是使用内部backrefs;我不确定,这是否得到普遍支持,但无论如何,.NET似乎都使用PCRE(这是真的吗?)。

然后,模式为[,单词][/,同一个单词]。如果我们假设该单词的质量只是“不包含]”,则匹配空标记的相应正则表达式为\[([^\]]+)\]\[/\1\],必要时在上下文中进行转义。

对于第二种情况,如果假设形式[tag=arg][/tag],并且该标记和arg每个都不包含任何']'(不是一个合理的假设!但处理它是留下的练习读者 - 我很确定大多数bbcode实现实际上都没有解决这个问题,可以使用正则表达式\[([^\]=]+)(=[^\]]*)?\]\[/\1\]