Javascript 移除锚定标记并使用正则表达式获取数组形式中的内部文本

Javascript 移除锚定标记并使用正则表达式获取数组形式中的内部文本,javascript,php,jquery,html,regex,Javascript,Php,Jquery,Html,Regex,我使用这段代码删除锚定标记,并使用表达式仅获取内部文本 <ul class="alpha"> <li><h3><a href="http://www.overstock.com/Electronics/Computers-Tablets/473/dept.html?TID=TN:ELEC:Comp">Computers &amp; Tablets</a></h3></li

我使用这段代码删除锚定标记,并使用表达式仅获取内部文本

    <ul class="alpha">
                <li><h3><a href="http://www.overstock.com/Electronics/Computers-Tablets/473/dept.html?TID=TN:ELEC:Comp">Computers &amp; Tablets</a></h3></li>
                <li><a href="http://www.overstock.com/Electronics/2-in-1s/28195/subcat.html?TID=TN:ELEC:2in1">2-in-1s</a></li>
                <li><a href="http://www.overstock.com/Electronics/Laptops/133/subcat.html?TID=TN:ELEC:Lap">Laptops</a></li>
</ul>

我们可以使用正则表达式在数组形式的锚定标记中获取内部文本吗?请分享您的想法。

既然您使用了jQuery标记,我更愿意在jQuery中这样做:

var values = [];
$('.alpha').find('a').each(function(index){
    values.push($(this).text());
});
此代码获取.alpha类中的所有链接,并将它们推送到
values
数组中。
值的输出为:

0: "Computers & Tablets"
1: "2-in-1s"
2: "Laptops"

我不希望您将HTML与正则表达式一起使用,而是使用DomDocument,但如果您想使用正则表达式,那么就可以使用
preg\u match\u all
as

preg_match_all('/(?:(<a.*?>))(.*?)(?=<\/a>)/', '<ul class="alpha">
                <li><h3><a href="http://www.overstock.com/Electronics/Computers-Tablets/473/dept.html?TID=TN:ELEC:Comp">Computers &amp; Tablets</a></h3></li>
                <li><a href="http://www.overstock.com/Electronics/2-in-1s/28195/subcat.html?TID=TN:ELEC:2in1">2-in-1s</a></li>
                <li><a href="http://www.overstock.com/Electronics/Laptops/133/subcat.html?TID=TN:ELEC:Lap">Laptops</a></li>
</ul>',$res);
print_r($res[0]);

那是PHP吗?使用
DOMDocument
可以轻松做到这一点。使用
preg\u replace
而不是
preg\u match\u all
作为一般规则:使用DOM解析,而不是正则表达式解析HTML。不要使用正则表达式处理HTML。请参阅问题,了解如何通过DOM操作完成。基于正则表达式的解决方案用于解析包含
*?
的HTML字符串远远不够完美。我相信你迟早会回到这里,找到一个可靠、正确的解决方案。举几个例子:。一旦输入字符串足够大,灾难性的回溯就迫在眉睫了。是的,你是对的@Stribizev,这就是为什么我说用HTML处理正则表达式不是个好主意,这不是处理HTML解析的正确方法
0: "Computers & Tablets"
1: "2-in-1s"
2: "Laptops"
preg_match_all('/(?:(<a.*?>))(.*?)(?=<\/a>)/', '<ul class="alpha">
                <li><h3><a href="http://www.overstock.com/Electronics/Computers-Tablets/473/dept.html?TID=TN:ELEC:Comp">Computers &amp; Tablets</a></h3></li>
                <li><a href="http://www.overstock.com/Electronics/2-in-1s/28195/subcat.html?TID=TN:ELEC:2in1">2-in-1s</a></li>
                <li><a href="http://www.overstock.com/Electronics/Laptops/133/subcat.html?TID=TN:ELEC:Lap">Laptops</a></li>
</ul>',$res);
print_r($res[0]);
Array
(
    [0] => Computers & Tablets
    [1] => 2-in-1s
    [2] => Laptops
)