拆分忽略正则表达式的一部分

时间:2016-02-23 21:02:03

标签: javascript regex split

我的目标是在javascript中获取<br>标记第n次出现的长度,以便我将它们分开。

我正在尝试正则表达式

((.|\s)*?<br\s?/?>){2}  //2 is the max number of lines(br tags) allowed.

虽然这在regexBuddy中运行良好

但是字符串被分成多个部分,忽略了浏览器中的<br\s?/?>部分。 你可以查看小提琴here

我做错了什么

2 个答案:

答案 0 :(得分:1)

在这种情况下,exec不会比split更有意义吗?

var str=$('#op').html();
var match = /((.|\s)*?<br\s?\/?>){2}/i.exec(str);
if( match )
  console.log(match[0].length);

答案 1 :(得分:0)

问题是您正在使用split()方法,该方法会根据正则表达式将字符串拆分为多个部分。这不包括您的正则表达式匹配。在您的情况下,字符串的第一部分与您的正则表达式匹配,因此您将在索引0处具有空字符串,并且在索引1中正则表达式之后的所有内容都匹配。

您应该尝试使用match()方法,它将返回与正则表达式匹配的字符串片段数组。

var str=$('#op').html();
console.log(str.match(/(([\s\S])*?<br\s?\/?>){2}/i)[0].length);

See code

相关问题