正则表达式只获得所有第一场连续比赛

时间:2016-03-26 18:53:53

标签: javascript regex

我有以下代码:

https://jsfiddle.net/s3fdjyjv/1

var re = /11\B/g; 
var str = '11111vjknvkjdnfvk11kjdnkjfgbnkfgjbnk1111jkngknfbkjf11111111gbnf';

console.log(str.match(re));

我试图只获得第一组连续比赛。

所以,在这个例子中我只想获得11的第一个连续匹配,这应该产生第一个1111

我怎样才能得到这个结果?

1 个答案:

答案 0 :(得分:1)

/11\B/g正则表达式匹配多个11子字符串,后面跟着字母数字字符或下划线,因为\B非字边界。< / p>

  

我试图只获得第一组连续比赛。

为此,您需要捕获组反向引用

var re = /(11)\1+/;

或     var re = new RegExp(“(11)\ 1 +”);

请注意,必须删除/g全局修饰符,因为您只需要第一个匹配项。

var re = new RegExp("(11)\\1+"); 
var str = '11111vjknvkjdnfvk11kjdnkjfgbnkfgjbnk1111jkngknfbkjf11111111gbnf';
var m = str.match(re);
var res = m ? m[0] + ", at " + re.lastIndex : "";
document.body.innerHTML = res;