我正在尝试遍历元素 block 以确定出现的最低价格。我有循环工作,但事实证明尝试正则表达式价格很困难。
正则表达式哪里出错了?
HTML
<div class="block">
<h2><a href="#>Title</a></h2>
<p><em class="price">£20.00</em></p>
</div>
<div class="block">
<h2><a href="#>Title</a></h2>
<p><em class="price">£20.00</em></p>
</div>
<div class="block">
<h2><a href="#>Title</a></h2>
<p><em class="price"><span class="rrp"£40.00</span>£20.00</em></p>
</div>
总体目标是在所有 html 中获得最高和最低出现价格? Javascript/jQuery
var highPrice;
var lowPrice;
$(".block").each(function(){
var currentPriceHtml = $(this).html();
var m;
do{
//match the following prices
//<span class="rrp">£40.00</span> £30.00
//£15.00
//£20.00
//£10.00
m = currentPriceHtml.exec(/^-?\$?[0-9]*\.?([0-9]{2})?%?$/);
if(m){
console.log(m[1], m[2]);
if(!highPrice || m[1] > highPrice)
highPrice = m1[1]; //set highest occurring price
if(!lowPrice || m[1] < lowPrice)
lowPrice = m[1]; //set lowest occurring price
}
}
while(currentPriceHtml);
console.log("High Price: " + highPrice);
console.log("Low Price: " + lowPrice);
});
最佳答案
我认为您可以稍微简化一下代码。像这样的事情怎么样:
var prices = $('.block .price').map(function() {
return $(this).text().match(/(\d+\.\d{2})/)[1];
}).get();
var min = Math.min.apply(null, prices);
alert(min);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="block">
<h2><a href="#">Title</a></h2>
<p><em class="price">£20.00</em></p>
</div>
<div class="block">
<h2><a href="#">Title</a></h2>
<p><em class="price">£19.00</em></p>
</div>
<div class="block">
<h2><a href="#">Title</a></h2>
<p><em class="price"><span class="rrp">£40.00</span> £20.00</em></p>
</div>
关于javascript - 使用 jQuery each 和 javascript 正则表达式匹配 HTML block 中的最低价和最高价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26502982/