Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用哪一个-递归查询或特定正则表达式_Javascript_Regex_Csv - Fatal编程技术网

Javascript 使用哪一个-递归查询或特定正则表达式

Javascript 使用哪一个-递归查询或特定正则表达式,javascript,regex,csv,Javascript,Regex,Csv,我有一个CSV行,看起来像: foo, bar, baz, "england, scotland, wales, ireland", sith 需要把它转换成 "foo", "bar", "baz", "england, scotland, wales, ireland", "sith" 我决定用“逗号”替换双引号之间的所有逗号,但是在双引号之间选择了一个子字符串之后,我对regex在这样做时遇到了问题,因为在使用 replace(/(.+)(,)(.+)/g, "'comma'") 我取

我有一个CSV行,看起来像:

foo, bar, baz, "england, scotland, wales, ireland", sith
需要把它转换成

"foo", "bar", "baz", "england, scotland, wales, ireland", "sith"
我决定用“逗号”替换双引号之间的所有逗号,但是在双引号之间选择了一个子字符串之后,我对regex在这样做时遇到了问题,因为在使用

replace(/(.+)(,)(.+)/g, "'comma'")
我取下一个子串

"england, scotland, wales'comma' ireland"
而不是

"england'comma' scotland'comma' wales'comma' ireland"
我不想使用结构更复杂的正则表达式,比如

/(.+)(,)(.+)(,)(.+)(,)(.+)/g

希望用逗号符号对单词进行分组,但无法为其选择正确的正则表达式,所以我使用递归子字符串搜索,并在for循环中进行匹配。我做得对吗,或者有一个正则表达式适合我,但我还没有找到它。谢谢。

您可以使用以下模式:

var re = /"([^"]*)"|([^\s,][^,]*)/g;
var str = 'foo, bar, baz, "england, scotland, wales, ireland", sith';
var subst = '"$1$2"';

var result = str.replace(re, subst);

console.log(result);

不要使用正则表达式,使用一个。这可能是一个固执己见的问题,但在这种情况下,我也会避免使用正则表达式,因为你最终会得到一个最多难以阅读的东西,最坏的情况是一个可维护性的噩梦。
replace(/(.+)(,)(.+)/g,“'comma'”
似乎不清楚。为什么要用逗号替换?最好使用支持正则表达式的拆分函数。哦,我忘了这一点。。为什么使用此
([^\s,][^,]*)
而不是
([^\s,]+)
?@AvinashRaj:这只是为了确保第一个字符不是空白,并修剪可能的前导空格(因为每个
后面都有空格)。