2011-08-19 43 views
2

我试图在这些标记之间移除具有属性和内容的BBCode。我使用这个正则表达式,我从here得到这里。我也尝试了其他的正则表达式,我发现在stackoverflow但他们没有为我工作,只是我在这里复制的是最接近的。用Javascript中的正则表达式移除BBCode

([[\/\!]*?[^\[\]]*?]) 

*?])前添加一个.,它maches标记之间的文本,但也符合pokemon,我不希望出现这种情况。

**Regex**: ([[\/\!]*?[^\[\]].*?]) 

**Text**: I'm a pokemon master and I like 
[TAG] this [/TAG] pokemon [TAG] and this [/TAG] text... 

我用这个网络来测试正则表达式http://regexpal.com/

谁能帮助我?

在此先感谢。

回答

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

jsFiddle

1

这应该这样做:

\[(\w+).*?\].*?\[/\1\] 

这将寻找一个结束标记相匹配的开始标记 - 也接受开放标签的属性。然后,JavaScript代码应该是:

str = str.replace(/\[(\w+).*?\].*?\[\/\1\]/, ""); 
1

这是你想要什么:

.replace(/\[(\w+)[^w]*?](.*?)\[\/\1]/g, '$2'); 

http://jsfiddle.net/L2rGx/1/

基本上你赶上标签之间的值,然后更换整个字符串与价值。

使用正则表达式来做到这一点并不虽然这样做的一个非常干净的方式...

对不起亚历克斯,但你没;吨阅读它似乎。

+0

您刚才复制了我的原始(错误)答案。 – alex

+0

忘记保存: -/ – sg3s

+1

这几乎是一样的......嘿嘿。我收到来自论坛的提要,我只用JavaScript来开发一些东西。谢谢。 –