javascript - 使用 jQuery each 和 javascript 正则表达式匹配 HTML block 中的最低价和最高价

标签 javascript jquery html regex

我正在尝试遍历元素 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>&nbsp;&nbsp;£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/

相关文章:

JQuery 获取最接近所选元素的 div

html - 使用下拉列表左右浮动导航按钮

css - 带有 HTML "draggable"的圆 Angular

html - 为什么 Google 和 Twitter 使用表格布局?

javascript - r.js 到底做了什么?

javascript - jquery 切换无法正常工作

java - 将 JSON 对象动态转换为表行

javascript - 将jquery插件应用于angularJS ng-repeat中的新项目

javascript - 发现在验证方法中按下了哪个提交按钮

javascript - 使用 jquery.validate.min.js 验证输入数组形式