0

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

[tag][/tag]

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

我进行了很多搜索并使用了正则表达式测试器,但没有想出任何正确的方法。

编辑:我现在意识到为什么我很难做到这一点。除了上面的例子,我还有一个是这样的:

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

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

4

2 回答 2

0

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

那么,模式是[,一个词,][/,同一个词,]。如果我们假设这个词只是具有“不包含]”的性质,那么匹配空标签的适当正则表达式是\[([^\]]+)\]\[/\1\],在上下文中根据需要进行转义。

对于第二种情况,如果假设 form [tag=arg][/tag],并且该 tag 和 arg 每个都不包含任何']'(不是一个合理的假设!但处理它留给读者作为练习 - 我很确定大多数 bbcode 实现实际上也不处理这个问题),可以使用 regex \[([^\]=]+)(=[^\]]*)?\]\[/\1\]

于 2013-05-27T23:12:41.760 回答
0

在 Javascript 中,你可以这样做:

str.replace(/\[([^\[\]]*)\]\[\/\1\]/g, '');
于 2013-05-27T23:08:44.760 回答