为什么“|” 不适用于组合 serval 正则表达式?

LiL*_*ian -1 javascript regex

我正在为 JavaScript 开发正则表达式。如果我这样写,正则表达式就可以工作:

let print = res.replace("[0;32m"," ").replace("[0m"," ").replace("[0;31m"," ");
Run Code Online (Sandbox Code Playgroud)

但是,我想将这三个组合成一个正则表达式,它不起作用。我的代码有什么问题?

// try this
let print = res.replace("[0;32m"|"[0m"|"[0;31m)", " ");
// and try this,too
let print = res.replace(("[0;32m")|("[0m")|("[0;31m"), " ");
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

Que*_*tin 6

这有两个主要原因:

  • 您没有使用正则表达式。您正在使用普通字符串。
  • 您没有| 正则表达式中使用,甚至没有在字符串中使用。在这种情况下,它是一个按位或运算符

如果您想要一个正则表达式,那么您需要使用正则表达式语法编写一个(因此您需要标记要进行 ORing 的组并转义特殊字符)。

const input = "test[;32mtest";
const result = input.replace(/(?:\[;32m)|(?:\[;0m)|(?:\[;31m)/, " ");
console.log(result);
Run Code Online (Sandbox Code Playgroud)