Javascript正则表达式以匹配货币

Javascript正则表达式以匹配货币,javascript,regex,Javascript,Regex,我想找到并匹配给定文本中的货币。可接受的格式包括: 10美元 10.25美元 999000美元 20亿美元 6.25亿美元 这是到目前为止我的正则表达式: var money_vals = $('body').text().match(/\$\d+\.?\d+(\,\d+)?(thousand|million|billion|trillion)?/g); 然而,它不符合20亿美元或6.25亿美元或任何后面跟着百万/亿/万亿的价值。 另外,在我的文本中的一段加上5美元后,我意识到它没有匹配

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

  • 10美元
  • 10.25美元
  • 999000美元
  • 20亿美元
  • 6.25亿美元
这是到目前为止我的正则表达式:

var money_vals =  $('body').text().match(/\$\d+\.?\d+(\,\d+)?(thousand|million|billion|trillion)?/g);
然而,它不符合20亿美元或6.25亿美元或任何后面跟着百万/亿/万亿的价值。 另外,在我的文本中的一段加上5美元后,我意识到它没有匹配


有人能帮忙吗?

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

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

作为一种通用形式,第1组与下面的边界词的第二组数字相匹配

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

精确匹配形式:

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

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++;
var re=/\$[0-9]+[?:,0-9]*(?:十亿+);
var sourcestring=“要与模式匹配的源字符串”;
var结果=[];
var i=0;
for(var matches=re.exec(sourcestring);matches!=null;matches=re.exec(sourcestring)){
结果[i]=匹配项;

对于(var j=0;jTry如下:\$\d+(,\\)\d+)(\s(千亿兆))?大多数货币符号的可能重复通常写为后缀(美元不是世界上唯一的货币)。这对我有用:var money vals=$('body').text().match(/\$\d+(,\d{3})*(\.\d+)(千亿兆兆兆兆兆兆兆兆兆兆)?/g);只相当于20亿美元和6.25亿美元