【发布时间】:2020-08-23 12:30:09
【问题描述】:
试图转义特殊字符。 我输入 $ 或 ^ 或 |它工作正常。 为什么我下面的代码没有转义 () {} ? * + 和 \ 当我输入这些时,我得到无效的表达式错误。
escape = function(value) {
return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
}
上面的表达有问题???
MDN 建议这样做
function escapeRegExp(string) {
return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
即使这样,我也面临同样的问题。 {} $ ^ | 没有错误但我得到 () * 的错误? \ +
【问题讨论】:
-
它们不需要转义,因为它们在
[ ]内部(这意味着它们是字符类的一部分),如果它们在外部,则需要转义以匹配为普通字符。 -
所以如果我必须逃避 [ ] 或 ?或 * 我需要将它们放在 [ ] 之外。因为当我输入 () 或 ? or + or * or \ 我得到无效的常规 exp 错误。我没有收到 {} $ # | 的错误^
标签: javascript regex regexp-replace