如何用数字和特殊字符替换字符串中的所有数字?

Aha*_*iPK 0 javascript regex

我有这样的字符串,

(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)

Cer*_*nce 5

尝试在输出中包含匹配$&:

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)