Javascript 正则表达式拆分分组

Javascript Regular Expression Split with Grouping

如果我有以下字符串:

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

如何获取 &bull;<br /> 之间的所有内容,所以我最终得到 w/:

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

谢谢

您需要使用 capturing groups因为 js 不支持后向断言)。

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

(?=<br\s*\/>) 肯定前瞻断言匹配必须后跟 <br> 字符串。 \s* 匹配零个或多个 space 个字符。

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' ]

试试这个:

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

简单但有效,假设字符串始终由“•
”序列分隔。

&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.
} 

试试这个:

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>