当我使用$时,正则表达式不起作用

Nav*_*h K 1 javascript regex replace special-characters

var x = '#google';    // or '@google' or '%google'
var pattern = new RegExp('(^|\\s)' + x);
var result = txt.replace(pattern, '$1' + 'MyNewWord');
Run Code Online (Sandbox Code Playgroud)

此代码可以替代#google

如果我使用&或@而不是#它工作正常

只有当我使用$而不是#时它不起作用,所以下面的代码不能正常工作

var x = '$google';   
var pattern = new RegExp('(^|\\s)' + x);
var result = txt.replace(pattern, '$1' + 'MyNewWord'); 
Run Code Online (Sandbox Code Playgroud)

ps我使用新的RegEXP,因为x将是用户输入.

Tro*_*ott 6

$ 是RegExp中的特殊字符,因此您需要将其转义:

var x = '\\$google';
var pattern = new RegExp('(^|\\s)' + x);
Run Code Online (Sandbox Code Playgroud)