繁体   English   中英

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

[英]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');
  1. 我将一个变量“anyOpenTag”设置为一个正则表达式,以验证它是否是一个开放标签,如( <p><div><span>等...

  2. 我将变量“anyCloseTag”设置为正则表达式,以验证它是否是结束标记,例如( </p></div>等...)

  3. 我设置了一个变量“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM