Javascript 使用正则表达式分析逗号分隔的字符串

Javascript 使用正则表达式分析逗号分隔的字符串,javascript,regex,csv,Javascript,Regex,Csv,我需要用JavaScript解析一个逗号分隔的字符串。字符串从CSV文件中提取。字符串将被\r\n、\n或\r\n拆分。第一行是标题 var str = 'firstname,middlename,lastname,address1,address2,city,st,zip,Custom01,Custom02,Custom03,Custom04,Custom05,Custom06,Custom07,Custom08,Custom09,Custom10,Custom11,Custom12,Cust

我需要用JavaScript解析一个逗号分隔的字符串。字符串从CSV文件中提取。字符串将被\r\n、\n或\r\n拆分。第一行是标题

var str = 'firstname,middlename,lastname,address1,address2,city,st,zip,Custom01,Custom02,Custom03,Custom04,Custom05,Custom06,Custom07,Custom08,Custom09,Custom10,Custom11,Custom12,Custom13,Custom14,Custom15,Custom16,Custom17,Custom18,Custom19,Custom20 \n K,,P,123 ST,,CENTENNIAL,CO,80122-3011,,,,,,,,,,,,,,,,,,,, \n K,,P,123 ST,,AURORA,CO,80013-2355,,,,,,,,,,,,,,,,,,,, \n K,,P,123 ST,,LAKEWOOD,CO,80228-5332,,,,,,,,,,,,,,,,,,,,';
我需要做两件事

  • 确保address1、city、st和zip不是空的
  • 确保zip只有5个数字

我在regext101.com上测试了一些示例,但运气不好。甚至没有接近所需要的。任何帮助都将不胜感激。谢谢

我想你不需要正则表达式。字符串拆分将执行您想要的操作:


作为读者的练习,我将检查这些代码是否为空。

这是我使用的代码,感谢sln。它使用正则表达式来解析csv文件中以逗号分隔的字符串,使用我的原始问题中列出的条件

for (i = 1; i < rows.length; i++) {
    var sample = rows[i].match(/^(?:[^,]*,){3}([^,]+),[^,]*,([^,]+),([^,]+),(\d{5})/gm);
    if (sample === null) {
        alert('Either the address1, city, st, or zip is blank. Or zip is more then 5 digits.');
    }
}
for(i=1;i
我不知道你的观点是什么意思。你具体试过什么?如果这个
^(?:[^,]*,){3}([]*[^,][^,]*,[^,]*,([]*[^,][^,]*),([[]*[^,][^,].]*,(\d{5})匹配,它通过了你的测试。谢谢你!工作很有魅力。这是一大笔开销。简单的正则表达式可能更快。虽然
split
的拼写字符较少,但我认为好的代码应该是可读的。我知道我更喜欢哪一个。也许,好的代码是主观的。如果使用扩展修饰符
/../x
for (i = 1; i < rows.length; i++) {
    var sample = rows[i].match(/^(?:[^,]*,){3}([^,]+),[^,]*,([^,]+),([^,]+),(\d{5})/gm);
    if (sample === null) {
        alert('Either the address1, city, st, or zip is blank. Or zip is more then 5 digits.');
    }
}