2016-07-28 11 views
-3

Существует строка с разделителями-запятыми, которые мне нужны для разбора с использованием JavaScript. Строка вытягивается из файла CSV. Строка будет разделена на \ r \ n, \ n или \ r. Первая строка - это заголовки.Разделительная строка с запятой с регулярным выражением

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,,,,,,,,,,,,,,,,,,,,'; 

Мне нужно сделать две вещи.

  • Убедитесь, что адрес1, город, улица и почтовый индекс не пусты.
  • Убедитесь, что почтовый индекс составляет всего 5 номеров.

Не проверял некоторые примеры на regext101.com без везения. Даже не приближаясь к тому, что нужно. Любая помощь будет оценена по достоинству. Благодаря!

+0

Я понятия не имею, что означают ваши точки. Что конкретно вы пробовали, в любом случае? – nicael

+2

Если это '^ (?: [^,] *,) {3} ([] * [^,] [^,] *), [^,] *, ([] * [^,] [^ ] *), ([] * [^,] [^,] *), (\ d {5}), 'соответствует ему, проходит ваш тест. – sln

+0

Спасибо, sln! Работал как шарм. – Kim

ответ

0

Я не думаю, что вам нужно регулярное выражение. Строка раскол будет делать то, что вы хотите: w3schools

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,,,,,,,,,,,,,,,,,,,,'; 

var str_parts = str.split(','); 

var address1 = str_parts[3]; 
var city = str_parts[5]; 
var street = str_parts[6]; 
var zip = str_parts[7]; 

Я проверить отпуск, что они не являются пустыми в качестве упражнения для читателя.

+0

Это много накладных расходов. Простое регулярное выражение может быть быстрее. Хотя заклинания 'split' с меньшим количеством символов. – sln

+0

Я думаю, что хороший код должен быть доступен для чтения. Я знаю, какой из них я бы лучше нашел. –

+0

Возможно, _good code_ субъективен. Regex читается, если [отформатирован] (http://www.regexformat.com) и используется с расширенным модификатором '/../ x' – sln

1

Это код, который я использовал благодаря 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.'); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^