如何替换多个字符而不是使用n次替换

时间:2019-02-28 09:57:33

标签: javascript

我想将“()”替换为字符串中的空格,现在我可以用3倍于此了

str=str.replace('(',' ');
str=str.replace(')',' ');
str=str.replace(',',' ');

我阅读了有关正则表达式的内容,以使其更容易,但我尝试使用

str=str.replace(/(),/,' ');

失败。

我做错了什么?

5 个答案:

答案 0 :(得分:2)

  • 在正则表达式后使用全局标志g
  • ()是特殊字符,因此需要转义。
  • 使用|运算符来匹配找到的任何字符串
  • 如果仅搜索字符,则可以使用字符类,例如:[(),]

匹配整个字符串的示例:

function fixString(text){
 return text.replace(/\(|\)|,/g, " ");
}

console.log(fixString(",1)2(3"));

匹配字符示例:

function fixString(text){
 return text.replace(/[(),]/g, " ");
}

console.log(fixString(",1)2(3"));

答案 1 :(得分:2)

您很近。您需要将要替换的字符添加到character class

let str = "(this is a string with commas,,)"
str = str.replace(/[(),]/g, ' ')
console.log(str)

答案 2 :(得分:2)

您可以使用带有全局标志的字符类进行替换。

/[(),]/g

function fixString(text){
   return text.replace(/[(),]/g, " ");
}

console.log(fixString(",1)2(3"));

答案 3 :(得分:1)

()在RegEx中具有特殊含义。将它们放在方括号中。您还必须指定全局g标志来替换多次出现。

var str='test(),test2';

str=str.replace(/[(),]/g, ' ');
console.log(str);

答案 4 :(得分:1)

只需使用此正则表达式-/[(,)]/g。在下面直播-

var x1 = '34(,12';
var x2 = '34),12';
var x3 = '34()12';
var x4 = '34,12';
var x5 = ',1)2(3';

x1 = x1.replace(/[(,)]/g, ' ');
x2 = x2.replace(/[(,)]/g, ' ');
x3 = x3.replace(/[(,)]/g, ' ');
x4 = x4.replace(/[(,)]/g, ' ');
x5 = x5.replace(/[(,)]/g, ' ');

console.log(x1);
console.log(x2);
console.log(x3);
console.log(x4);
console.log(x5);

建议:您可以使用通用函数将其隔离,如下所示-

var filterString = (str) => str.replace(/[(,)]/g, ' ');

var x = '3,4,5(6,7),1)2(3';

console.log(filterString(x));