【问题标题】:JavaScript RegExp in replace() not working [duplicate]replace() 中的 JavaScript RegExp 不起作用 [重复]
【发布时间】:2016-09-19 07:59:15
【问题描述】:

我有这个代码

var str = "Some text :$0";
var i = 0;

alert(str.replace(new RegExp("\:\$" + i, "g"), 'here'));

here

为什么它不起作用?如果我这样做 /\:\$:0/g 而不是使用 RegExp 对象,那么它可以工作,但我不能以这种方式使用模式中的变量。怎么了?

【问题讨论】:

  • new RegExp(":\\$" + i, "g"),这里是jsfiddle.net/3zyr03h0/1
  • 检查小提琴。
  • 这里必须是一个规范的骗子...
  • 新正则表达式(/(\:\$\d*)/,"g") --> jsfiddle.net/3zyr03h0
  • @dharmesh:OP 很清楚想要针对特定​​数字。

标签: javascript regex


【解决方案1】:

因为在字符串字面量中,\ 具有特殊的含义。如果您想在 正则表达式 中实际放置一个\,则需要在字符串文字中对其进行转义:

new RegExp("\\:\\$" + i, "g")

但是:在正则表达式中没有特殊含义,不需要转义:

new RegExp(":\\$" + i, "g")

var str = "Some text :$0";
var i = 0;

console.log(str.replace(new RegExp(":\\$" + i, "g"), 'here'));

【讨论】:

    猜你喜欢
    • 2017-08-28
    • 2012-05-13
    • 2013-11-03
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 2018-10-04
    相关资源
    最近更新 更多