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

时间:2012-10-13 04:04:49

标签: 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');

此代码可以替代#google

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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