[英]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"]
謝謝
嘗試這個:
s.replace(/(^•\s*|<br(?: ?\/)?>)/g, "").split(/•\s*/g);
簡單但有效,假設字符串始終由“&bull; <br />”序列定界。
您需要使用捕獲組 ( 因為js將不支持后向斷言 )。
•\s*(.*?)(?=<br\s*\/>)
(?=<br\\s*\\/>)
/> (?=<br\\s*\\/>)
正向超前,斷言匹配后必須跟隨<br>
字符串。 \\s*
匹配零個或多個空格字符。
從組索引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*(.*?)<br\s*\/>
您只需capturing
所需的組即可完成此操作。請參閱演示。
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.