我有这样的字符串,
(1 AND 2 ) OR (2 AND 3)
Run Code Online (Sandbox Code Playgroud)
我需要用数字+特殊字符(比如1@,2@)替换这个字符串所有数字,结果应该是这样的,
(1@ AND 2@ ) OR (2@ AND 3@),
Run Code Online (Sandbox Code Playgroud)
所以我试过以下,
var d = "(1 AND 2 ) OR (2 AND 3)"
console.log(d.replace(/[0-9]/g, "@"))Run Code Online (Sandbox Code Playgroud)
但它只会产生一个结果,
(@ AND @ ) OR (@ AND @)
Run Code Online (Sandbox Code Playgroud)
我的预期输出是,
(1@ AND 2@ ) OR (2@ AND 3@)
Run Code Online (Sandbox Code Playgroud)
尝试在输出中包含匹配$&:
const str = '(1 AND 2 ) OR (2 AND 3)'
console.log(str.replace(/\d/g, '$&@'));Run Code Online (Sandbox Code Playgroud)
您也可以使用(新)lookbehind,这样就可以匹配边界,但不是数字本身:
const str = '(1 AND 2 ) OR (2 AND 3)'
console.log(str.replace(/(?<=\d)/g, '@'));Run Code Online (Sandbox Code Playgroud)