4

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.

2
  • 1
    Required read for everyone who asks about parsing HTML with regular expressions: stackoverflow.com/questions/1732348/… Commented Oct 28, 2013 at 10:23
  • 3
    Have bookmarked that answer long back in my Stack folder, don't want to simply increase its view. I don't need a Chuck Norris RegEx for matching tags. My conditions are limited. Given a limited set of conditions, it can be done! Commented Oct 28, 2013 at 10:28

1 Answer 1

4

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.

Sign up to request clarification or add additional context in comments.

6 Comments

I didn't know that we can use \1 in that very expression, Have always used in the expression after the comma. Worked. Thanks!
Yes \1 is back-reference that can be used in the regex itself.
If I want to remove the specific tag with its content, could you please help me?
@anubhava it doesn't work str.replace(/<(a)\s*[^>]*>.*?<\/\1>/ig, '') and I want to remove all a tags with its content please help me to solve this.
@GulmuhammadAkbari: Comments is not the right place to ask new questions. Please post a new question and you will get answers.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.