使用逗号或不使用逗号匹配行

时间:2013-10-02 13:58:38

标签: javascript regex

我正在尝试以逗号分隔的列表将每个元素用引号括起来,但是我无法捕获最后一行,它没有逗号

 var input_value = 

'test,
 test,
 test'

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

我如何抓住最后一行并在他周围加上引号?

带有/(.*?,)|(.*?)/gm运算符的

|将每个字母和周围的内容与最后一行中的引号分开。我怎么滥用它?

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

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

请注意,您并不真正需要m修饰符,同时使用(.+?)而不是(.*+)会阻止正则表达式匹配字符串末尾的空字符串。

编辑:我已经更新了下面的演示示例,所以请检查一下。要了解(.+?)(.*?)的区别,只需编辑演示中的正则表达式,看看会发生什么,如果您无法解释为什么会这样,请告诉我,我会进一步解释。< / p>

Regex101 Demo

答案 1 :(得分:0)

这是一种不同的方法,但这可能有效:

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

这取决于您的数据结构。如果每行只有一个单词后面跟一个逗号,它就会起作用。