我正在尝试以逗号分隔的列表将每个元素用引号括起来,但是我无法捕获最后一行,它没有逗号
var input_value =
'test,
test,
test'
input_value.replace(/(.*?),/gm, "\"$1\", ") //=> "test",
"test",
"test",
test
我如何抓住最后一行并在他周围加上引号?
带有/(.*?,)|(.*?)/gm
运算符的 |
将每个字母和周围的内容与最后一行中的引号分开。我怎么滥用它?
答案 0 :(得分:2)
尝试以下方法:
input_value.replace(/(.+?)(,|$)/g, "\"$1\"$2 ")
^^^^^
Match a comma , or the end-of-string $
请注意,您并不真正需要m
修饰符,同时使用(.+?)
而不是(.*+)
会阻止正则表达式匹配字符串末尾的空字符串。
编辑:我已经更新了下面的演示示例,所以请检查一下。要了解(.+?)
与(.*?)
的区别,只需编辑演示中的正则表达式,看看会发生什么,如果您无法解释为什么会这样,请告诉我,我会进一步解释。< / p>
答案 1 :(得分:0)
这是一种不同的方法,但这可能有效:
input_value.replace(/\b[^,]+/g, "\"$1\");
这取决于您的数据结构。如果每行只有一个单词后面跟一个逗号,它就会起作用。