Javascript 正则表达式拆分分组
Javascript Regular Expression Split with Grouping
如果我有以下字符串:
• This is string 1<br />• This is string 2<br />• This is string 3<br />
如何获取 •
和 <br />
之间的所有内容,所以我最终得到 w/:
["This is string 1", "This is string 2", "This is string 3"]
谢谢
您需要使用 capturing groups(因为 js 不支持后向断言)。
•\s*(.*?)(?=<br\s*\/>)
(?=<br\s*\/>)
肯定前瞻断言匹配必须后跟 <br>
字符串。 \s*
匹配零个或多个 space 个字符。
从组索引 1 中获取所需的字符串。
> var s = []
undefined
> var f = "• This is string 1<br />• This is string 2<br />• This is string 3<br />"
undefined
> var re = /•\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(/(^•\s*|<br(?: ?\/)?>)/g, "").split(/•\s*/g);
简单但有效,假设字符串始终由“•
”序列分隔。
•\s*(.*?)<br\s*\/>
您可以简单地通过 capturing
所需的 groups.See 演示来完成。
https://regex101.com/r/tX2bH4/23
var re = /•\s*(.*?)<br\s*\/>/gi;
var str = '• This is string 1<br />• This is string 2<br />• 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='• This is string 1<br />• This is string 2<br />• This is string 3<br />';
var r=a.split(/•\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>
如果我有以下字符串:
• This is string 1<br />• This is string 2<br />• This is string 3<br />
如何获取 •
和 <br />
之间的所有内容,所以我最终得到 w/:
["This is string 1", "This is string 2", "This is string 3"]
谢谢
您需要使用 capturing groups(因为 js 不支持后向断言)。
•\s*(.*?)(?=<br\s*\/>)
(?=<br\s*\/>)
肯定前瞻断言匹配必须后跟 <br>
字符串。 \s*
匹配零个或多个 space 个字符。
从组索引 1 中获取所需的字符串。
> var s = []
undefined
> var f = "• This is string 1<br />• This is string 2<br />• This is string 3<br />"
undefined
> var re = /•\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(/(^•\s*|<br(?: ?\/)?>)/g, "").split(/•\s*/g);
简单但有效,假设字符串始终由“•
”序列分隔。
•\s*(.*?)<br\s*\/>
您可以简单地通过 capturing
所需的 groups.See 演示来完成。
https://regex101.com/r/tX2bH4/23
var re = /•\s*(.*?)<br\s*\/>/gi;
var str = '• This is string 1<br />• This is string 2<br />• 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='• This is string 1<br />• This is string 2<br />• This is string 3<br />';
var r=a.split(/•\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>