希望逃避所有出现的“。”。和 “:” 方括号内,无法替换()使用子匹配
[ab:1.2:ef]='12.3' => [ab\:1\.2\:ef]='12.3'
尝试不同的排列上replace
,例如,
str.replace(/(\[.*)(\.|:)(.*\])/g, '\1\\\2\3');
,但没有喜悦。
这两个答案正确,更多。
首先,纯模式匹配,完成工作,非常简洁。在我看来,它更好地回答了陈述的问题。
第二个,调用replace
带有一个函数arg,稍微有点强壮,并且提供了更多的灵活性。在我的代码中使用这种方法,因为它可以轻松处理一些特殊情况。
很好的解释。让我感到惊讶的是,你并不担心领导支架(因为它必须在那里) - 使匹配更加复杂。 –
这不需要打开和关闭大括号。因此,它不适用于:[[ab:1.2:ef] ='12.3]'或'ab:1.2:ef] ='12.3'。 – jfriend00
对,这就是为什么我写了括号必须正确平衡(JavaScript不支持后向断言)。我应该补充一点,这也涉及到字符串中的括号,注释等。 –