为什么“”不适用于组合serval正则表达式?
我正在为 JavaScript 开发正则表达式。如果我这样写,正则表达式就可以工作:
let print = res.replace("[0;32m"," ").replace("[0m"," ").replace("[0;31m"," ");
但是,我想将这三个组合成一个正则表达式,它不起作用。我的代码有什么问题?
// try this
let print = res.replace("[0;32m"|"[0m"|"[0;31m)", " ");
// and try this,too
let print = res.replace(("[0;32m")|("[0m")|("[0;31m"), " ");
感谢您的帮助。
回答
这有两个主要原因:
- 您没有使用正则表达式。您正在使用普通字符串。
- 您没有
|
在正则表达式中使用,甚至没有在字符串中使用。在这种情况下,它是一个按位或运算符。
如果您想要一个正则表达式,那么您需要使用正则表达式语法编写一个(因此您需要标记要进行 ORing 的组并转义特殊字符)。
const input = "test[;32mtest";
const result = input.replace(/(?:[;32m)|(?:[;0m)|(?:[;31m)/, " ");
console.log(result);