解析美元金额的HTML源,然后将最高金额设置为var

时间:2011-02-19 05:12:53

标签: javascript html parsing

我需要一个JavaScript函数来解析页面的HTML源代码,从中调用它作为外部脚本,检索源代码中的任何金额,并将最高金额设置为JavaScript变量。

因此,例如,如果页面包含文本,“您的产品是40.32美元,税收是4.50美元,您的总额是44.82美元。”,JS应该解析这些值并将$ 44.82设置为“var total”作为最高金额。可能的?

3 个答案:

答案 0 :(得分:0)

在这里看看这个问题,它演示了如何从字符串中提取数字:Javascript extracting number from string

试试这个:

 // get all content from page
 var content = document.body.innerHTML;

 // create an array of all dollar amounts in the content
 arrayNum = content.match(/\$[0-9]+\.[0-9]+/g);

 // display array of numbers
 console.info(arrayNum);

 var high = 0;
 for(var i = 0; i < arrayNum.length; i++) {

     // remove the dollar sign and cast the string to a float
     arrayNum[i] = parseFloat(arrayNum[i].substring(1));

     // get the high value - O(n) operation
     high = ( (arrayNum[i]) > high ) ? arrayNum[i] : high;
 } 

 alert("High value = " high);

答案 1 :(得分:0)

您可以通过抓取文档的innerHtml从Javascript中获取当前文档的HTML,如:

document.getElementsByTagName('html')[0].innerHTML

然后,您可以使用正则表达式提取所有货币值,例如:

((\$(([0-9]{0,1})?\.[0-9]{1,2}))|(\$([1-9]{1}[0-9]{0,2}([,][0-9]{3})*)(\.[0-9]{1,2})?))

只需循环遍历所有匹配项,每当当前匹配项大于总计值时,将总计设置为当前匹配项。

免责声明:正在使用http://gskinner.com/RegExr/来自社区的正则表达式,我不能保证它是100%完全正确的。

答案 2 :(得分:0)

感谢我根据我写的提示,这是有效的。希望你或我的解决方案能够帮助他人:

var dochtml = document.getElementsByTagName('body')[0] .innerHTML;

dochtml = dochtml.replace(/(\ r \ n | \ n | \ r)/ gm,“”);

var price_array = new Array; var pattmatch = /(\$(([0-9]{0,1})?.[0-9]{1,2}))|(\$([1-9]{1}[0- ?9] {0,2}([,] [0-9] {3})*)([0-9] {1,2}))/ GI; price_array = dochtml.match(pattmatch);

if(price_array){   for(var i = 0; itotal ||!total){       var total = price_array [i];      }   }

文件撰写(总); }