返还美元金额正则表达式javascript

时间:2014-11-26 13:09:33

标签: javascript

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

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

它的工作原理但并非总是如此,当上面的示例中有多个数字时,它似乎返回null,是否有其他方法可以执行此操作?

3 个答案:

答案 0 :(得分:0)

如果你想赶上" $ 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"];

答案 1 :(得分:0)

您正在测试的正则表达式表示该模式必须从字符串的开头开始(通过^字符),这可以解释为什么您要测试的示例字符串有时会返回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"]

答案 2 :(得分:0)

尝试

/\$(\d+)/g

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

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

如果奖品是浮点数或整数,则返回美元金额。如果奖金是浮动的,那么将是两个arryas,一个是美元金额,另一个是美分金额。