Javascript RegExp验证字符串以html打开标记+除标记之外的任何内容结束



我想验证字符串是否以任何打开的Tag结尾,后面是否有文本

例如:

<div>some text here

<span>some text here

应匹配

但是

<div>some text here</div>

<h1>some text here</h1>

不应该

我试图想出一个解决方案(对不起,我不是regex专业版(

let anyOpenTag = '<([^/>][^>])*>';
let anyCloseTag = '</[^/>][^>]*>';
let neitherOpenNorCloseTag = `[^(${anyOpenTag}|${anyCloseTag})]`;
let regex = new RegExp(
escapeRegExp(`${anyOpenTag}${neitherOpenNorCloseTag}*$`),
'gi');
  1. 我设置了一个变量";anyOpenTag";到regex,该regex验证它是否是像(<p><div><span>等…

  2. 我设置了一个变量";anyCloseTag";到regex,该regex验证它是否是类似(</p></div>等(的结束标记

  3. 我设置了一个变量";neitherOpenNorCloseTag";它试图将两者结合起来,并使用[^….]检查是否不是其中之一

最后我检查正则表达式是否匹配任何OpenTag+neitherOpenNorCloseTag

不幸的是,它对我不起作用,恰恰是验证";neitherOpenNorCloseTag";

感谢您的帮助,即使您有更好的正则表达式,我也会感谢

根据您的示例,此片段有效:

const regex = /<.*>.*</.*>/g
const regexString = (regex) => {
return (s) => {
return !s.match(regex)
}
}
const validateString = regexString(regex)
const strings = [
'<div>some text here',
'<span>some text here',
'<div>some text here</div>',
'<h1>some text here</h1>',
]
const validated = strings.map(validateString)
console.log('Result:', validated)

相关内容

最新更新