如何使用JavaScript中的RegExp从这个简单的字符串中提取数字?

时间:2010-08-08 08:11:35

标签: javascript regex

我需要从以下简单字符串中提取数字:

base:873

其中“base:”部分是可选的,即它可能/可能不存在于字符串中。

我应该如何使用RegExp从上面的字符串中提取数字?

P.S。:很遗憾看到其他正则表达式实现与JavaScript之间存在很大差异。

TIA, 梅迪

UPDATE1:

考虑这个循环:

for (var i = 0; i < 3; i++) {
    code = '216';

    var matches = /(bid:)?(\d+)/ig.exec(code);
    if (matches != null) {
        console.log('>>>' + matches[0]);
    }
    else {
        console.log('>>> no match');
    }
}

请注意,“code”变量是在循环中设置的,仅用于测试目的。然而,令人惊奇的是上面提到的代码打印出来:

>>>216
>>> no match
>>>216

这怎么可能?

2 个答案:

答案 0 :(得分:3)

好吧,如果base:是可选的,你不需要关心它,是吗?

\d+

就是你所需要的一切。

result = subject.match(/\d+/);

将返回字符串subject中的(第一个)数字。

或者您的意思是:只有当数字是字符串中的唯一内容或者前面是base:时才匹配数字?

在这种情况下,请使用^(?:base:)?(\d+)$

var match = /^(?:base:)?(\d+)$/.exec(subject);
if (match != null) {
    result = match[1];
}

答案 1 :(得分:0)

尝试(base:)?(\d+)

该数字将位于第二个捕获变量中。

或者,将“base:”替换为空。

或拆分':'。

或者其他什么。