简体   繁体   中英

Remove BBCode with Regex in Javascript

I am trying to remove BBCode with attributes and content between those tags. I'm using this regular expression that I got here from here . I also tried other regex I found on stackoverflow but they didn't work for me, just the one I copy here is the closest.

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

I added a . before *?]) and it maches the text between the tags but also matches pokemon and I don't want that.

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

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

I use this web to test regex http://regexpal.com/

Can anyone help me?

Thanks in advance.

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

js小提琴

This is what you want:

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

JavaScript demo

Basically you catch the value between tags and then replace the whole string with that value.

Using a regex to do this isn't a very clean way of doing it though...

Sorry Alex but you didn;t read it seems.

This should do:

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

This will look for a closing tag matching the opening tag - and also accept attributes on the opening tag. The JavaScript code should then be:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM