我正式宣布自己是愚蠢的!我对正则表达式非常擅长,但是 javascript 正则表达式让我很紧张:
我有以下 html 字符串:
htmlString = '<div class="aa">TextOne</div><ul><li>one</li></ul>';
我需要根据 aa 类 div 内的文本获取 UL 元素内的所有内容。
我尝试了以下方法:
textItem = 'TextOne';
ulRegex = new RegExp('<div class="aa">'+textItem+'</div><ul>(.*)</ul>', "igm");
ul = ulRegex.exec(htmlString);
在写这个问题时,我在我的正则表达式中发现了一个错误(一个微小的额外字符),它没有让它匹配,但对于所有寻找特定内容的人 - javascript / 正则表达式 / html 字符串 / html 子字符串 - 它工作正常。
已编辑
我很感谢对此的所有补充——但我正在使用正则表达式的另一个方面——我正在匹配一个文本项,我首先通过一个变量来获取正则表达式模式。
解决方案
收到一些提示和建议后,我想出了以下内容,这也可能对其他人有所帮助:
htmlString = '<div class="aa">TextOne</div><ul><li>one</li></ul>';
textItem = 'TextOne';
tempdiv = $('<div/>');
tempdiv.html(htmlString);
ul = tempdiv.find('div.aa:contains('+textItem+')').next('ul');
$('#res').append(ul);
下一个 ul 很重要,因为它解决了有关嵌套 UL 和任何其他基于正则表达式的解决方案的问题,其中我无法匹配第一级 UL(具有内部一个或多个 Uls)。