Reputation: 8069
I need a regex that could remove the full tag from start to end.
For eg.:
For the given string:
var str = "Hello <script> console.log('script tag') </script> World";
I need an output:
"Hello World" // with full script tag including inner content removed
I am very specific for only the RegEx
solution, so don't need browser append tricks.
Kindly notify if this is not possible at all.
I tried this and its variations:
inputString.replace( /<\/?[^>]+(>|$)/g, "" );
But this is not achieving what I want and is removing only the tag elements, leaving the inner content. What RegEx
groups should I create in the expression?
I do not need to address stuff like type="text/javascript"
, as they are already filtered before I receive the string.
No jQuery plz. (I need to store the RegEx as a property to my filter object).
Help appreciated.
Upvotes: 4
Views: 1263
Reputation: 785866
This is pure regex solution:
var str = "Hello <script> console.log('script tag') </script> World";
var repl = str.replace(/<([^.]+)>.*?<\/\1>/ig, '');
//=> "Hello World"
with an assumption that there is no <
OR >
between opening and closing tags.
Upvotes: 4