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


此代码可以很好地代替#google

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

只有在我使用$而不是#时它才不起作用,因此以下代码无法正常工作

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


ps我使用了新的RegEXP,因为x是用户输入。

最佳答案

$是RegEx中的特殊字符,因此您需要对其进行转义:

var x = '\\$google';
var pattern = new RegExp('(^|\\s)' + x);

10-07 19:38
查看更多