var names = "John Keynes
Carl Gauss
Paul Feyerabend
Antoine Lavoisier"
输出结果应为:
"John Keynes","Carl Gauss","Paul Feyerabend","Antoine Lavoisier"
最佳答案
只需捕获每两个单词并匹配以下一个或多个空格即可。然后将整个匹配项替换为$1,
> var names = "John Keynes Carl Gauss Paul Feyerabend Antoine Lavoisier";
undefined
> names.replace(/(\S+\s+\S+)\s+/g, "$1,")
'John Keynes,Carl Gauss,Paul Feyerabend,Antoine Lavoisier'
\S+
匹配一个或多个非空格字符,其中\s+
的作用与\S+
的相反,后者匹配一个或多个空格字符。 (..)
称为捕获组用于捕获与捕获组内存在的模式匹配的那些字符。稍后,我们可以通过在替换部分上指定组索引号来引用这些字符。要将名称括在双引号中,您需要添加另一个
replace
函数。> names.replace(/(\S+\s+\S+)\s+/g, "$1,").replace(/([^,\s]+\s+[^,\s]+)/g, '"$1"')
'"John Keynes","Carl Gauss","Paul Feyerabend","Antoine Lavoisier"'