返回美元金额正则表达式 JavaScript

return dollar amount regex javascript

本文关键字:JavaScript 正则表达式 金额 美元 返回      更新时间:2023-09-26

我有这个提取的字符串,我试图返回美元金额。

var str = "5 Iphones in stock at $299 on 11/26";
var strNew = str.match(/^'$?[0-9]+/g);
strIwant = "$299"

它有效但并非总是如此,当有多个数字时,它似乎返回 null,如上例所示,有没有另一种方法可以做到这一点?

您测试时使用的正则表达式指示模式必须从字符串的开头开始(通过^字符),这可以解释为什么您测试的示例字符串有时会返回null

就匹配整美元金额(没有小数和美分)而言,'$[0-9]+应该就足够了。以下是似乎适合您需求的工作示例代码:

var strs = ["5 Iphones in stock at $299 on 11/26 and $500 on 11/27", 
            "5 Iphones in stock at $299 on 11/26",
            // this would be matched with your original regex
            "$200 worth of Iphones in stock at $299 on 11/26 and $500 on 11/27"];
strs.forEach(function(v) { console.log(v.match(/'$[0-9]+/g)); })

将我预期的结果打印到控制台,

["$299", "$500"]
["$299"]
["$200", "$299", "$500"]

如果你想抓住"$299",你必须使用将表达式包装在"()"中

如果美元总是必要的,那么不需要"?"

最后,如果数量可以在字符串的任何部分,那么"^"是wron

var str = "5 Iphones in stock at $299 on 11/26";
var strNew = str.match(/('$[0-9]+)/g);

然后,strNew 现在是匹配值的数组。 strNew = ["$299"]

var str = "5 Iphones in stock at $299 on 11/26 and $199 off";
var strNew = str.match(/('$[0-9]+)/g); 

则 strNew = ["$299", "$199"] ;

试试

/'$('d+)/g

如果奖品是整数,则返回美元金额。

/'$('d+)('.'d+)?/g

如果奖品是浮动或整数,这将返回美元金额。如果奖品是浮动的,则为两个阿里亚,一个是美元金额,另一个是美分金额。