我正式宣布自己是个笨蛋!!!我对正则表达式很在行,但是 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(具有一个或多个内部 UL)。
最佳答案
解决方案
在收到一些提示和建议后,我想出了以下可能对其他人也有帮助的建议:
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(具有一个或多个内部 UL)。
关于javascript - 从javascript中的html字符串获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19636867/