2015-10-14 40 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