我需要从以下字符串中捕获价格:
Price: 30
。
我需要30
,所以我想我会使用以下正则表达式:
([0-9]+)$
这适用于Rubular,但在我的javascript中尝试时会返回null
。
console.log(values[1]);
// Price: 100
var price = values[1].match('/([0-9]+)$/g');
// null
有什么想法吗?提前致谢
答案 0 :(得分:4)
试试这个:
var price = values[1].match(/([0-9]+)$/g);
JavaScript支持RegExp文字,您不需要引号和分隔符
顺便提一句,.match(/\d+$/)
的行为应该相同。
另请参阅:MDN - Creating a Regular Expression
请记住,有更简单的方法来获取此数据。例如:
var tokens = values[1].split(': ');
var price = tokens[1];
您也可以按单个空格拆分,可能还想添加一些验证。
答案 1 :(得分:2)
你为什么不用这个?
var matches = a.match(/\d+/);
然后你可以消耗第一个元素(或最后一个)
我的建议是尽量避免使用$,因为最后可能会有空格。
答案 2 :(得分:2)
这也有效:
var price = values[1].match('([0-9]+)$');
答案 3 :(得分:1)
看来你逃过了开放式的,因此正则表达式正在寻找“(90”。
答案 4 :(得分:1)
您无需在JavaScript中为正则表达式添加引号。