如何在某些单词后得到数字?

时间:2016-06-16 20:47:54

标签: javascript jquery regex

我有一个带有几个单词的变量,后面跟一个数字,我怎样才能得到一个单词之后的某个数字?

例如,如果我有:

var a = "books23 birds47 cars38";

如何通过查看“鸟类”这个词来获得数字47?更清楚的是,如何获得“鸟类”之后的数字?

4 个答案:

答案 0 :(得分:3)

你可以这样做:

var nums = a.split(' ').map(function(b) {
  return b.match(/[0-9]+/g)[0];
});

现在这些nums实际上是字符串,如果你想让它们成为数字,请执行以下操作:

var numbers = nums.map(Number);

快速演示:https://jsbin.com/mugime/1/edit?js,console

答案 1 :(得分:2)

另一种方便地将匹配存储在对象中的解决方案:



var a = "books23 birds47 cars38";
var things = {};
a.split` `.map(function(x){
  things[x.match(/[a-z]+/g)[0]] = x.match(/[0-9]+/g)[0];
})
console.log(things.books);
console.log(things.birds);
console.log(things.cars);




答案 2 :(得分:1)

"在一个单词之后" - 如果它是一个固定的单词,你可以使用包含单词本身的正则表达式:

var num = /birds(\d+)/.exec(a)[1];

[1]告诉它提取组(\d+),这意味着一个或多个数字的字符串。

这也会匹配bigbirds47之类的内容。您可以使用\b指定它必须位于单词边界:

var num = /\bbirds(\d+)/.exec(a)[1];

如果你想让它用于其他单词,你可以从这样的字符串构建一个正则表达式模式:

var word = "birds";
var num = new RegExp("\\b"+word+"(\\d+)").exec(a)[1];

答案 3 :(得分:1)

您可以使用棘手的函数从字符串中收集所有名称:值对。

<ion-list>
    <ion-item *ngFor="let person of dataService.observableList | async">
        {{person.name}}
    </ion-item>
</ion-list>