2016-02-23 27 views
0

我的目標是獲得長度,直到第n次出現的<br>標記在JavaScript中,所以我分裂了他們。斯普利特忽略正則表達式的一部分

我想正則表達式

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

儘管這是使用RegexBuddy

工作正常,但該字符串分裂成多個部分,忽略瀏覽器的<br\s?/?>部分。 您可以查看小提琴here

我在做什麼錯

+0

你能提供小提琴的理想效果嗎?我的意思是什麼'長度'應該返回 – Sachin

+0

'這是一個多線測試的長度。
..
'即45 – Shubanker

+0

字符的數量直到第br標籤出現爲止 – Shubanker

回答

0

的問題是,你正在使用的split()方法,這將在基於正則表達式塊分割字符串了。這不包括您的正則表達式匹配。在你的情況下,字符串的第一部分與你的正則表達式匹配,所以你應該在索引0處有一個空字符串,並且在索引1中的正則表達式匹配後的所有東西。

你應該嘗試使用match()方法,而不是將返回與正則表達式匹配的字符串數組。

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

See code

1

豈不exec比作在這種情況下split更有意義?

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

太棒了,+1 .... https://regex101.com/r/iX0dW5/4 – Shafizadeh