2015-01-16 3 views
0

Если у меня есть следующая строка:Javascript Regular Expression Разделить с группировкой

&bull; This is string 1<br />&bull; This is string 2<br />&bull; This is string 3<br /> 

Как я могу получить все содержимое между &bull; и <br />, так что я в конечном итоге ш /:

["This is string 1", "This is string 2", "This is string 3"] 

Спасибо

ответ

1

Попробуйте это:

s.replace(/(^&bull;\s*|<br(?: ?\/)?>)/g, "").split(/&bull;\s*/g); 

Простой, но эффективный, предполагая, что строка последовательно ограничена "& быка; < br/> "последовательностей.

0

Вам необходимо использовать capturing groups (, так как js не поддерживает утверждение lookbehind).

&bull;\s*(.*?)(?=<br\s*\/>) 

(?=<br\s*\/>) Положительное опережение, который утверждает, что матч должен следовать <br> строки. \s* соответствует нулю или больше символа пробела.

DEMO

Получить нужную строку из индекса группы 1.

> var s = [] 
undefined 
> var f = "&bull; This is string 1<br />&bull; This is string 2<br />&bull; This is string 3<br />" 
undefined 
> var re = /&bull;\s*(.*?)(?=<br\s*\/>)/g; 
undefined 
> var m; 
undefined 
> while ((m = re.exec(f)) != null) { 
... s.push(m[1]); 
... } 
3 
> console.log(s) 
[ 'This is string 1', 'This is string 2', 'This is string 3' ] 
+0

заменить '(. *)' В приведенном выше регулярное выражение с '([\ s \ S] *?) ', если вход содержит символы новой строки. –

0
&bull;\s*(.*?)<br\s*\/> 

Вы можете сделать это просто capturing необходимый groups.See демо.

https://regex101.com/r/tX2bH4/23

var re = /&bull;\s*(.*?)<br\s*\/>/gi; 
var str = '&bull; This is string 1<br />&bull; This is string 2<br />&bull; This is string 3<br />'; 
var m; 

while ((m = re.exec(str)) != null) { 
if (m.index === re.lastIndex) { 
re.lastIndex++; 
} 
// View your result using the m-variable. 
// eg m[0] etc. 
} 
0

Попробуйте это:

var a='&bull; This is string 1<br />&bull; This is string 2<br />&bull; This is string 3<br />'; 
 
var r=a.split(/&bull;\s*|<br\s*\/>/); 
 
var nr=r.filter(function(v){return v!==''}); 
 
console.log(nr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>