簡體   English   中英

用分組分割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;之間的所有內容&bull; <br />所以我最終w /:

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

謝謝

嘗試這個:

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

簡單但有效,假設字符串始終由“&bull; <br />”序列定界。

您需要使用捕獲組因為js將不支持后向斷言 )。

&bull;\s*(.*?)(?=<br\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' ]
&bull;\s*(.*?)<br\s*\/>

您只需capturing所需的組即可完成此操作。請參閱演示。

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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM