【问题标题】:Regex doesnt work when I use $当我使用 $ 时,正则表达式不起作用
【发布时间】:2012-10-13 04:04:48
【问题描述】:
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 将是用户输入。

【问题讨论】:

  • in regex $ 表示字符串结束
  • $ 在正则表达式中有特殊的含义。正确地转义它,你应该没问题。
  • 顺便说一句,$1' + 'MyNewWord'$1MyNewWord 相同,可以在字符串中插入标记。

标签: javascript regex replace special-characters


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多