我需要从以下简单字符串中提取数字:
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
这怎么可能?
答案 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:”替换为空。
或拆分':'。
或者其他什么。