删除括号之间和之后的空格 - 在一个正则表达式(javascript)中

时间:2018-01-19 10:07:33

标签: javascript regex

删除括号之间和之后的空格。

这可以写成一行(现在我有两行)吗?

function removeSpaceAfterBeforeBrackets(str) {
    str = str.replace(/\s*\(\s*/gi, "(");
    str = str.replace(/\s*\)\s*/gi, ")");
    return str;
}

4 个答案:

答案 0 :(得分:2)

您可以使用组中的或([()])捕获括号前后的空格和括号本身,并仅使用替换中捕获的括号。

在此示例中,将是第2组$2

function removeSpaceAfterBeforeBrackets(str) {
  return str.replace(/(\s*)([()])(\s*)/gi, "$2");
}
console.log(removeSpaceAfterBeforeBrackets("adfdfdf ( fdf ) ljlkjljk"));
console.log(removeSpaceAfterBeforeBrackets("adfdfdf ( fdf ) ljlkjlj( (  (()) )  ))) (( (k"));

答案 1 :(得分:0)

您需要使用function removeSpaceAfterBeforeBrackets(str) { str = str.replace(/\s+([()])\s+/g, "$1"); return str; } 方法的特殊替换模式,如here所述:

var regex = /\s+([()])\s+/g;
var input = "aaa a ( b bb b ) ccc c ( ddd";
console.log(input.replace(regex, "$1"));

这将取代整个正则表达式匹配捕获组,在这种情况下只包括括号字符。

这是一个即时测试:



{{1}}




答案 2 :(得分:0)

你可以这样做: -

function removeSpaceAfterBeforeBrackets(str) {
    str = str.replace(/\s*\(\s*/gi|/\s*\)\s*/gi , "");
    return str;
}

答案 3 :(得分:0)

function removeSpaceAfterBeforeBrackets(str) {
    str = str.replace(/\s*[\)|\(]\s*/gi, function(x){   
           return x.indexOf(')') > -1 ? ')' : '('; 
       });
    return str;
}

或ES6:

function removeSpaceAfterBeforeBrackets(str) {
    str = str.replace(/\s*[\)|\(]\s*/gi, x => x.indexOf(')') > -1 ? ')' : '(') 
    return str;
}