首先,不要链接到“不要使用正则表达式解析 HTML ”帖子 :)
我有以下 HTML,用于显示各种货币、含税和不含税的价格:
<span id="price_break_12345" name="1">
<span class="price">
<span class="inc" >
<span class="GBP">£25.00</span>
<span class="USD" style="display:none;">$34.31</span>
<span class="EUR" style="display:none;">27.92 €</span>
</span>
<span class="ex" style="display:none;">
<span class="GBP">£20.83</span>
<span class="USD" style="display:none;">$34.31</span>
<span class="EUR" style="display:none;">23.27 €</span>
</span>
</span>
<span style="display:none" class="raw_price">25.000</span>
</span>
AJAX 调用返回一个 HTML 字符串,其中包含上述 HTML 的多个副本,价格各不相同。我试图与正则表达式匹配的是:
- 上述 HTML 的每个块(如前所述,它在返回字符串中出现多次)
name
最外层的属性值span
我到目前为止是这样的:
var price_regex = new RegExp(/(<span([\s\S]*?)><span([\s\S]*?)>([\s\S]*?)<\/span><\/span\>)/gm);
console && console.log(price_regex.exec(product_price));
对于发生的每个价格突破,它匹配第一个价格突破一次(所以如果有name=1
,name=5
并且name=15
它匹配name=1
3 次。
我哪里错了?