gpt4 book ai didi

javascript - 为什么 "("会导致正则表达式不匹配?

转载 作者:行者123 更新时间:2023-11-28 11:34:39 25 4
gpt4 key购买 nike

我有以下字符串:

var foo = "{(y-7)}({x + d})"
var find = "{(y-7)}";
var replacement = "12";
var re = new RegExp(find, 'g');
foo = foo.replace(re, replacement);

但这会产生完全相同的字符串,没有任何更改。但是,如果我从表达式中删除括号,即“(”和“)”,那么它似乎可以工作。为什么

为什么表达式中包含“(”时会不匹配?

最佳答案

正则表达式中具有特殊含义的字符需要转义。您可以通过在它们前面放置反斜杠来转义它们,并且要在字符串中放置反斜杠,您需要通过在其前面放置反斜杠来转义它们:

var find = "\\{\\(y-7\\)\\}";

(在某些情况下,字符不需要在正则表达式中转义,因为没有它也可以理解,但首先转义所有具有特殊含义的字符,然后您可以阅读它所在的确切情况不需要。)

演示:

var foo = "{(y-7)}({x + d})"
var find = "\\{\\(y-7\\)\\}";
var replacement = "12";
var re = new RegExp(find, 'g');
foo = foo.replace(re, replacement);

// show result in StackOverflow snippet
document.write(foo);

关于javascript - 为什么 "("会导致正则表达式不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com