我想验证字符串是否以任何打开的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');
我设置了一个变量";anyOpenTag";到regex,该regex验证它是否是像(
<p>
、<div>
、<span>
等…我设置了一个变量";anyCloseTag";到regex,该regex验证它是否是类似(
</p>
、</div>
等(的结束标记我设置了一个变量";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)