删除所有出现的新行和标签

时间:2014-03-11 10:12:21

标签: javascript regex replace

我仍然在学习一些像样的正则表达式,但我认为这样可行。

这有效:

str.replace(/   /g,"").replace(/(\r\n|\n|\r)/gm,"");

但是这个的缩短版本却没有。我哪里出错了?

str.replace((/  /g)|(/(\r\n|\n|\r)/gm),"");

4 个答案:

答案 0 :(得分:4)

regexpr分隔符为/,因此表达式中包含“或”|。如果您想加入他们,请尝试

str.replace((/  |\r\n|\n|\r/gm),"");

顺便说一句,标签字符在正则表达式中为\t,因此如果要删除所有标签和新行,可以使用str.replace(/[\t\n\r]/gm,'');这样说,如果使用“标签”,则表示任何标识包括“4个空格”,然后使用str.replace(/[ {4}\t\n\r]/gm,'');

答案 1 :(得分:1)

你应该在下面做(将两个正则表达式合并为一个):

str = str.replace(/  |\r\n|\n|\r/gm, '');

对于2个空格,你也可以写:

str = str.replace(/ {2}|\r\n|\n|\r/gm, '');

答案 2 :(得分:1)

您可能希望将它们分组,而不是所有OR运算符:

str = "Hello\n" +
      "there    stranger!";

str.replace(/[\r\n\t]/g, "")
// "Hellotherestranger!"

[]组表示“此组中的任何字符”,它比所有OR表达式更清晰。

答案 3 :(得分:0)

您可以尝试:

str.replace(/(\r\n|\n|\r|(  ))/gm,"");