Regex,如果特定的字符串包含在特定的HTML标记之间

Regex if certain string is included between particular HTML tags

本文关键字:HTML 之间 字符串 如果 Regex 包含      更新时间:2023-09-26

我有下面的html作为文本字符串

<p>I'll write a H1 below</p>
<h1>Hi I'm H1</h1>
<p>Last p</p>

我想做的是看看H1标记中是否存在"i’m H1"——好奇上面的正则表达式是什么,这样它就会返回真正的

第页。S: 即使它包含<h1>I'm H1 buddy</h1>,它也应该返回true,所以本质上是在h1标记中,如果它包含特定的字符串,在上面的情况下"I’m h1",它应该输出true

以下正则表达式应该有效:

<h1>.*I'm H1.*<'/h1>

这是<h1>,然后是可选文本(.*(,然后是"我是H1",然后是更可选的文本(.*(,最后是</h1>

在线正则表达式测试仪上的演示。

这是用Regex解决问题的一种方法。

var re = /<h1>.*?'sI'm'sH1.*?<'/h1>/; 
var str = '<p>I''ll write a H1 below</p>'n<h1>Hi I''m H1 buddy</h1>'n<p>Last p</p>';
var m;
 
if ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}
document.getElementById("results").innerHTML = m != null
<div id="results"></div>

你可以试试这个:

/(I'm H1)/.test("Hi I'm H1") // return true
/(I'm H1)/.test("Hi I'm H1 buddy") // return true
<h1>.*?I'm'sH1.*?</h1>
  • .*?最小匹配的任意或无字符(因此不匹配多个H1(
  • 任何空白的's
  • I'm'sH1文字

编辑:无需转义<>

您需要正则表达式是有原因的吗?

if (document.getElementsByTagName('h1')[0].innerHTML.indexOf("Hi I'm H1") != -1) 
{ 
}