使用正则表达式(JS)通过其内容查找html标记

时间:2016-07-22 10:13:05

标签: javascript html regex

我想要做的是找到包含字符串“test string”的标签,即使该标签嵌套在其他标签内也是如此。

HTML示例:

<section class="test-class1"><div><p class="test-class2">something else....test string</p></div></section>

正则表达式:

/.*<([a-zA-Z]*).*>.*?test string/g

输出:

p

我正在使用https://regex101.com/#javascript进行测试;

当html很小时,这个正则表达式很有效,但是当HTML的大小增加时,它会超时。

有没有办法提高正则表达式的性能?

2 个答案:

答案 0 :(得分:0)

< *(\w+)[^<>]*>[^<]*(?:<[^>]*)*test string

匹配第一个捕获组(p)中的$1。不可能加速这么快。你最好使用纯JS函数。

答案 1 :(得分:0)

试试这个<(\w+)[^>]+>[^>]+test string

var data = '<section class="test-class1"><div><p class="test-class2">something else....test string</p></div></section>';
var regex = /<(\w+)[^>]+>[^>]+test string/
var output = regex.exec(data);
alert(output[1]); 

Online Regex