2015-10-14 82 views
4

我可以用逗號(,)在JavaScript中用分隔符分隔字符串。我的字符串如下:用條件拆分JavaScript字符串

"Hojas, DNI, Factura {Con N° de O/C impresa, otra cosa}, Pasaporte, Permiso"  

結果應該是:

["Hojas", "DNI", "Factura {Con N° de O/C impresa, otra cosa}", "Pasaporte", "Permiso"] 

我試着做到以下幾點:

"Hojas, DNI, Factura {Con N° de O/C impresa, otra cosa}, Pasaporte, Permiso".split(/,\s+(.+\s{.+})?/g) 

但我得到以下結果:["Hojas", "DNI, Factura {Con N° de O/C impresa, otra cosa}", "", undefined, "Pasaporte", undefined, "Permiso"]

回答

3

假設沒有未配對或嵌套{},你可以使用一個(?![^{}]*})前瞻,以確保沒有關閉}逗號後:

\s*,\s*(?![^{}]*}) 

the regex demo

而且一個片段:

var re = /\s*,\s*(?![^{}]*})/g; 
 
var str = 'Hojas, DNI, Factura {Con N° de O/C impresa, otra cosa}, Pasaporte, Permiso'; 
 
var res = str.split(re); 
 
for (var i=0; i<res.length; i++) { 
 
    document.write(res[i]+ "<br/>"); 
 
}

The \s*用於修剪生成的數組條目。

0

請看看下面的代碼片段:

var arr = "Hojas, DNI, Factura {Con N° de O/C impresa, otra cosa}, Pasaporte, Permiso".split(/\s*,\s*(?![^{}]*})/g); 
console.log(arr); 
+0

'Factura {精讀N°日O/C IMPRESA,OTRA COSA}'應該是一個因素,但你的代碼得到兩個 – Grundy

+0

@Grundy:謝謝。更正了相同的。 – amitguptageek