使用 preg_replace 的正则表达式中的特殊字符问题

Problem with special characters in regexp using preg_replace

我的正则表达式有问题,正则表达式试图确定我搜索的短语是否在 <hx> 标签内

这是例子: https://regex101.com/r/xAlJJc/3

如您所见,示例中恰好有 1 个匹配项,这很好

问题是,当你向这个 <h1>test string</h1> 正则表达式添加点、逗号或其他字符时,正则表达式会变得疯狂并显示 2 个匹配项

有谁知道如何确保: https://regex101.com/r/xAlJJc/4

找不到 "test string" 的任何匹配项?

如果我的理解正确,你可能想试一试:

^<\w*>(test string)<\/\w*>

在我的例子中,解决方案是使用这个正则表达式:

(Test)(?![^>]*?[^<]*?<\/a>)(?![^>]*?[^<]*?<\/button>)(?![^>]*?[^<]*?<\/h[1-6]>)

谢谢大家的努力:)