删除括号之间和之后的空格。
这可以写成一行(现在我有两行)吗?
function removeSpaceAfterBeforeBrackets(str) {
str = str.replace(/\s*\(\s*/gi, "(");
str = str.replace(/\s*\)\s*/gi, ")");
return str;
}
答案 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;
}