我有以下代码:
https://jsfiddle.net/s3fdjyjv/1
var re = /11\B/g;
var str = '11111vjknvkjdnfvk11kjdnkjfgbnkfgjbnk1111jkngknfbkjf11111111gbnf';
console.log(str.match(re));
我试图只获得第一组连续比赛。
所以,在这个例子中我只想获得11
的第一个连续匹配,这应该产生第一个1111
。
我怎样才能得到这个结果?
答案 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;