我想分割一个包含多个名称的字符串,格式为Surname, First Name(s),Surname, First Name(s)
,逗号两边都没有空格作为分隔符:
var input = 'White, Sterling M.,Devinney, Michael,Bernal, Tracy';
input.split(/[^ ]{1},[^ ]{1}/g); //Outputs: ["White, Sterling M", "evinney, Michae", "ernal, Tracy"]
如何在逗号的两边保留/包含字符?它不一定需要是split
,这与我来的结果最接近。
注意:如果你想知道,我从另一个系统得到这个列表,所以我没有选择更改我给的更容易的字符串解析。
欢迎任何帮助!
答案 0 :(得分:4)
你需要使用lookbehind断言来使用.split()
执行此操作,JavaScript不支持这些。但你可以匹配而不是分裂:
result = input.match(/(?: ,|, |[^,])+/g);
<强>说明:强>
(?: # Start of group that matches either...
[ ], # a space followed by a comma
| # or
,[ ] # a comma, followed by a space
| # or
[^,] # any character except a comma
)+ # one or more times.
答案 1 :(得分:1)
只需使用/,(?=[^ ])/
:
"White, Sterling M.,Devinney, Michael,Bernal, Tracy".split(/,(?=[^ ])/);
Output on Chrome console:
["White, Sterling M.", "Devinney, Michael", "Bernal, Tracy"]
您只需检查,
,其中以下字符不是空格
虽然JS不支持lookbehinds,但它支持前瞻,因为我理解你的问题,这就是你需要的。
答案 2 :(得分:0)
试试这个
var input = new String('White, Sterling M.,Devinney, Michael,Bernal, Tracy');
var test = input.split(/[^ ]{1},[^ ]{1}/g);
for(var i = 0; i < (test.length-1); i++) {
alert(test[0]);
alert(test[1]);
alert(test[2]);
}