使用正则表达式我正在尝试删除空的 bbcode 标签。空我的意思是它们之间没有任何意义:
[tag][/tag]
如果他们之间有什么东西,那么它应该被保留。
我进行了很多搜索并使用了正则表达式测试器,但没有想出任何正确的方法。
编辑:我现在意识到为什么我很难做到这一点。除了上面的例子,我还有一个是这样的:
[url=http://www.somedomain.com/][/url]
我正在尝试在提交表单时清理 bbcode,因此它没有被存储,因为它是不需要的。
在这种情况下,正则表达式的操作方面是使用内部反向引用;我不确定这是否得到普遍支持,但无论如何,.NET 似乎使用 PCRE(这是真的吗?)。
那么,模式是[
,一个词,][/
,同一个词,]
。如果我们假设这个词只是具有“不包含]
”的性质,那么匹配空标签的适当正则表达式是\[([^\]]+)\]\[/\1\]
,在上下文中根据需要进行转义。
对于第二种情况,如果假设 form [tag=arg][/tag]
,并且该 tag 和 arg 每个都不包含任何']'
(不是一个合理的假设!但处理它留给读者作为练习 - 我很确定大多数 bbcode 实现实际上也不处理这个问题),可以使用 regex \[([^\]=]+)(=[^\]]*)?\]\[/\1\]
。
在 Javascript 中,你可以这样做:
str.replace(/\[([^\[\]]*)\]\[\/\1\]/g, '');