2013-10-02 5 views
0

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

var input_value = 

'test, 
test, 
test' 

input_value.replace(/(.*?),/gm, "\"$1\", ") //=> "test", 
               "test", 
               "test", 
                test 

Как может Я хватаю этот последний ряд и ставил котировки вокруг него?

/(.*?,)|(.*?)/gm с оператором | разделяет каждую букву и окружение кавычками в последней строке. Как я злоупотребляю им?

ответ

2

Попробуйте следующее:

input_value.replace(/(.+?)(,|$)/g, "\"$1\"$2 ") 
          ^^^^^ 
       Match a comma , or the end-of-string $ 

Обратите внимание, что вы на самом деле не нужен модификатор m, также используя (.+?) вместо (.*+) предотвращает из поиска пустой строки в конце строки.

EDIT: Я обновил демонстрационный пример ниже, поэтому, пожалуйста, проверьте его. Чтобы узнать, как (.+?) отличается от (.*?), просто отредактируйте регулярное выражение в демо и посмотрите, что произойдет, если вы не можете объяснить, почему это происходит, сообщите мне, и я объясню дальше.

Regex101 Demo

+1

Я думаю, вы близки, но, возможно, строка замены должна быть «\» $ 1 \ «$ 2», чтобы она не помещала запятую на последний элемент. Я не пробовал, просто мысль. – MacAnthony

+0

@MacAnthony Вы правы, и мне нужно еще несколько настроек, но я жду обратной связи от OP, чтобы редактировать соответственно. –

+0

Это работает очень хорошо. Я замечаю, что он помещает разрывы строк между каждым значением, которое он помещает в кавычки. Почему это? Кроме того, вы можете показать другой пример того, как '. +' Отличается от '. *'? Огромное спасибо. – 1252748

0

Это другой подход, но это может работать:

input_value.replace(/\b[^,]+/g, "\"$1\"); 

Это будет зависеть от вашей структуры данных, хотя. Если это всего лишь одно слово в каждой строке, за которым следует запятая, это сработает.

+0

Это будет работать, только если соответствующее вам значение начинается с символа слова, как в примере. Но ОП не сказал, как будут выглядеть реальные ценности. Если бы я был вами, я бы принял решение. –

+0

@AlanMoore - вот почему я сказал, что это решение будет зависеть от структуры данных. – MacAnthony

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