Javascript Regex匹配货币

时间:2015-10-29 10:38:02

标签: javascript regex

我想找到并匹配给定文本中的货币。接受的格式是:

  • $ 10
  • $ 10.25
  • $ 999,000
  • 20亿美元
  • $ 6.25亿

到目前为止这是我的正则表达式:

var money_vals =  $('body').text().match(/\$\d+\.?\d+(\,\d+)?(thousand|million|billion|trillion)?/g);

然而,它不符合20亿美元或6.25亿美元或任何价值,其次是百万/亿/万亿。 此外,在我的文本中的一个段落中添加5美元后,我意识到它没有匹配。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

通用表格,第1组与第二组第二组匹配以下边界词

\$[\s]?([\d\.\,]+)[\s]*([\w]*)

http://regexr.com/3c3av

完全匹配表格:

\$[\s]?([\d\.\,]+)[\s]*(thousand|million|billion|trillion)?

http://regexr.com/3c3as

答案 1 :(得分:0)

您应该使用以下正则表达式:

/\$\d+[\,\.\d\s]*(?:thousand|million|billion|trillion|$)/ig

答案 2 :(得分:0)

试试这个

var re = /\$[0-9]+[?:, 0-9]*(?:billion|million+)?/;
var sourcestring = "source string to match with pattern";
var results = [];
var i = 0;
for (var matches = re.exec(sourcestring); matches != null; matches = re.exec(sourcestring)) {
 results[i] = matches;
for (var j=0; j<matches.length; j++) {
  alert("results["+i+"]["+j+"] = " + results[i][j]);
}
i++;

}

这将解决您的问题。