0

我正在编写小部件程序以从彭博网站获取白银或黄金价格,这些是脚本的一部分:

function getPrice()  {

    var url = new URL();
    url.location = "http://www.bloomberg.com/markets/commodities/futures/";
    url.fetchAsync(PriceReturn);
}


function PriceReturn(url)   {

    var resultStr = url.result;     
    var subCheck = resultStr.substring(resultStr.indexOf("SILVER"));    
    foundStr = subCheck.match("[0-9]+\.[0-9]+");
    setPrice(parseFloat(foundStr).toFixed(2));
}

我可以得到白银的价格(假设现在是 27.30)但是当我想检查黄金价格时(.indexOf("GOLD"))(假设现在是 1,585.60)

subcheck.match()得到这个价格的脚本是什么?

4

2 回答 2

2

你的问题是[0-9]+\.[0-9]+与数字不匹配1,585.60。正确的正则表达式是:

/\d{1,3}(?:,\d{3})*\.\d{2}/

这会将格式化的数字匹配到小数点后两位。

于 2012-07-20T18:38:21.537 回答
0

我认为te模式应该是这样的:

/\d+(\,\d+)?\.\d{1,3}/
于 2012-07-20T19:25:35.770 回答