最后一个冒号后匹配字符串

时间:2017-02-17 11:30:59

标签: javascript regex

我有以下字符串

  

foo:21,bar:11

其中foo和bar不是常数,所以我试图匹配最后":#34; (冒号)字符后的所有数字。

const myString = 'foo: 21, bar: 11'
myString.match(/\d+/g).shift().join() -> 11

我可以用纯正则表达式做同样的事吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

使用否定正则表达式,您可以使用此正则表达式:

/\d+(?![^:]*:)/g

RegEx Demo

(?![^:]*:)是负面预测,断言我们匹配的数字前面没有:

代码演示:

var myString = 'foo: 21, bar: 11';
console.log(myString.match(/\d+(?![^:]*:)/g));

答案 1 :(得分:1)

var myString = 'foo: 21, bar: 11';
console.log(myString.replace(/(.)*\:\s?/,''));

答案 2 :(得分:1)

您可以使用以下两种解决方案之一:

这一个将匹配最后一个:并抓取0+空格后的数字:

var s = "foo: 21, bar: 11";
var m = s.match(/.*:\s*(\d+)/);
if (m !== null) {
  console.log(m[1]);
}

然后这个会找到一个:后面跟着0+空格,然后将1+个数字捕获到第1组,然后匹配除:以外的0 +字符到字符串的结尾。

var s = "foo: 21, bar: 11";
m1 = s.match(/:\s*(\d+)[^:]*$/);
if (m1 !== null) {
  console.log(m1[1]);
}