[英]Javascript RegExp verify string finishes with html open tag + anything but a tag
我想验证一个字符串是否以任何打开的标签结尾,后跟或不跟一个文本
例如:
<div>some text here
或者
<span>some text here
应该匹配
但
<div>some text here</div>
或者
<h1>some text here</h1>
不应该
我试图想出一个解决方案(对不起,我不是正则表达式专家)
let anyOpenTag = '<([^/>][^>])*>';
let anyCloseTag = '</[^/>][^>]*>';
let neitherOpenNorCloseTag = `[^(${anyOpenTag}|${anyCloseTag})]`;
let regex = new RegExp(
escapeRegExp(`${anyOpenTag}${neitherOpenNorCloseTag}*$`),
'gi');
我将一个变量“anyOpenTag”设置为一个正则表达式,以验证它是否是一个开放标签,如( <p>
、 <div>
、 <span>
等...
我将变量“anyCloseTag”设置为正则表达式,以验证它是否是结束标记,例如( </p>
、 </div>
等...)
我设置了一个变量“neitherOpenNorCloseTag”,试图将两者结合起来,并使用 [^....] 检查它是否不是其中之一
最后我检查正则表达式是否匹配 anyOpenTag + noneOpenNorCloseTag
不幸的是,它对我不起作用,正是验证“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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.