JavaScript / jQuery - 从字符串中获取数字

12

字符串看起来像这样

"blabla blabla-5 amount-10 blabla direction-left"

如何获取"amount-"后面的数字,以及"direction-"后面的文本?


2
遵循什么规则?提取所有数字吗?期望的结果是什么,一个数组吗? - Pekka
不,只返回这些参数后面的数字/字符串。输出应该是一个字符串。 - Alex
3个回答

38

以下代码可获取逗号分隔的所有数字:

var str = "10 is smaller than 11 but greater then 9";
var pattern = /[0-9]+/g;
var matches = str.match(pattern);

执行后,字符串 matches 将具有值 "10,11,9"

如果只想获取第一个出现的数字,模式将是 /[0-9]+/ - 这将返回10

(无需使用 JQuery)


这是最有效的方法。谢谢! - Anand Chavan

17

这个使用正则表达式exec方法:

var s = "blabla blabla-5 amount-10 blabla direction-left";
var amount = parseInt(/amount-(\d+)/.exec(s)[1], 10);
var direction = /direction-([^\s]+)/.exec(s)[1];

如果缺少数量或方向,该代码将导致错误。 如果可能的话,请在索引应返回的数组之前检查exec的结果是否为非null。


6

你可以使用正则表达式,如w3schools所述。提示:

str = "blabla blabla-5 amount-10 blabla direction-left"
alert(str.match(/amount-([0-9]+)/));

否则,如果你只想要所有数字,可以使用模式[0-9]+。 str.match会返回一个数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接