gpt4 book ai didi

javascript - 在 javascript 中,不能使用子匹配替换 ()

转载 作者:行者123 更新时间:2023-11-30 13:28:26 24 4
gpt4 key购买 nike

希望转义所有出现的“.”和方括号内的“:”

[ab:1.2:ef]='12.3' => [ab\:1\.2\:ef]='12.3'

replace 上尝试了各种排列,例如,

str.replace( /(\[.*)(\.|:)(.*\])/g, '\1\\\2\3' );

但没有快乐。


两个答案都正确且更多。

第一个是纯模式匹配,可以完成工作并且非常简洁。在我看来,它更好地回答了上述问题。

第二种方法是使用函数 arg 调用 replace,它更加稳健,并提供了更大的灵 active 。在我的代码中使用这种方法是因为它可以轻松处理一些特殊情况。

最佳答案

假设括号始终正确平衡(即使在字符串或注释中)并且永​​远不会嵌套或转义,您可以使用 lookahead assertions 在单个正则表达式中解决此问题:

result = subject.replace(/([:.])(?=[^[\]]*\])/g, "\\$1");

作为注释的正则表达式:

([:.])    # Match and remember a dot/colon,
(?= # only if it is followed by:
[^[\]]* # any number of characters excluding brackets,
\] # followed by a closing bracket.
) # End of lookahead assertion.

先行确保我们正在查看的点/冒号之后的下一个括号是右括号。

关于javascript - 在 javascript 中,不能使用子匹配替换 (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670801/

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