Home > Software engineering >  Regex to find whether the multiline String is without html tags or not
Regex to find whether the multiline String is without html tags or not

Time:03-26

I need to check whether the string with multiple lines contains any HTML tags(<>) in it or not.

var regex= /^(?!.*<[^>] >).*$/;


console.log('istextWithoutHtml--', regex.test('Line1\nLine2'));\\ Expecting true, since it doesnt have html tags

\\ Expecting false for these combinations, since it contains html tags in it
\\ 'Line1<a>\nLine2'
\\ 'Line1\nLine2<p>'
\\ '<a></a>'
\\ '<\img>'
\\ '</a>\n</b>'

Trial 1

var regex1 = new RegExp(regex);
    
console.log('istextWithoutHtml---', regex1.test('Line1\nLine2')); \\ false (I am expecting true here)

console.log('istextWithoutHtml---', regex1.test('Line1<a>\nLine2')); \\ false

Trial 2

var regex2 = new RegExp(regex, 's');

console.log('istextWithoutHtml---', regex2.test('Line1\nLine2')); \\ true
console.log('istextWithoutHtml---', regex2.test('Line1<a>\nLine2')); \\ true (I am expecting false here)

Trial 3

var regex3 = new RegExp(regex, 'm');

console.log('istextWithoutHtml---', regex3.test('Line1\nLine2')); \\ true
console.log('istextWithoutHtml---', regex3.test('Line1<a>\nLine2')); \\ true (I am expecting false here)

Is there any way to achieve both HTML tag check in the multiple line string.

CodePudding user response:

You can use

/^(?![^]*<[^>] >)[^]*/.test(text)

Details:

  • ^ - start of string
  • (?![^]*<[^>] >) - immediately to the right, there should be no zero or more chars followed with <, one or more chars other than > and then a > char.
  • [^]* - any zero or more chars as many as possible
  • Related