用于删除除双引号之间的所有空格的Javascript正则表达式

Rob*_*Rob 5 javascript regex string replace

我有一个字符串,我需要删除所有空格除了之间的内容"".这是我用来删除空格的正则表达式.

str.replace(/\s/g, "");
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何让它忽略引号之间的空格.例

str = 'Here is my example "leave spaces here", ok im done'
Output = 'Hereismyexample"leave spaces here",okimdone'
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 8

var output = input.split('"').map(function(v,i){
   return i%2 ? v : v.replace(/\s/g, "");
}).join('"');
Run Code Online (Sandbox Code Playgroud)

请注意,我重命名了变量,因为我无法使用名称以大写开头的变量编写代码,尤其是当它是语言的标准构造函数时.如果有疑问,我建议你坚持这些指导方针.


nha*_*tdh 8

另一种方法.这假设在字符串的双引号部分内不允许转义(例如,否"leave \" space \" here"),但可以很容易地修改以允许转义.

str.replace(/([^"]+)|("[^"]+")/g, function($0, $1, $2) {
    if ($1) {
        return $1.replace(/\s/g, '');
    } else {
        return $2; 
    } 
});
Run Code Online (Sandbox Code Playgroud)

修改正则表达式以允许"在带引号的字符串内转义:

/([^"]+)|("(?:[^"\\]|\\.)+")/
Run Code Online (Sandbox Code Playgroud)