0

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

 var input_value = 

'test,
 test,
 test'

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

我怎样才能抓住最后一行并在他周围加上引号?

/(.*?,)|(.*?)/gm|运算符分隔每个字母并在最后一行用引号括起来。我如何滥用它?

4

2 回答 2

2

尝试以下操作:

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

请注意,您实际上并不需要m修饰符,也使用(.+?)而不是(.*+)防止正则表达式匹配字符串末尾的空字符串。

编辑:我已经更新了下面的演示示例,所以请检查一下。要查看(.+?)(.*?)仅在演示中编辑正则表达式有何不同,看看会发生什么,如果您无法解释为什么会发生这种情况,请告诉我,我会进一步解释。

正则表达式 101 演示

于 2013-10-02T14:01:14.640 回答
0

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

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

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

于 2013-10-02T14:25:45.227 回答