javascript无效的正则表达式

标签 javascript jquery

我有以下代码:

$.each(css, function(i, v) {
        css[i] = this.replace('{bind}', bindName, css[i]);
});

我想用 bindName 的值替换所有 {bind}。 为了尝试这个,我给了 bindName 值“Test”。

'css' 是一个带有数据的简单对象。

var css = {
            tabs          : 'tab-{bind}',
            outerWrapper  : 'outerWrapper-{bind}',
            innerWrapper  : 'innerWrapper-{bind}-{id}-{tab}',
            subMenue      : 'subMenue-{bind}-{id}',
            subMenueItem  : 'subMenue-Item'
          };

在 Firefox 中,我在第 68 行收到错误“无效的正则表达式标志 k”。 第 68 行:

$.each(css, function(i, v) {
        css[i] = this.replace('{bind}', bindName, css[i]); // LINE 68
});

如果有必要,这是我的替换功能:

this.replace = function (s, r, su) {
      return su.split(s).join(r);
    }   

在 Google-Chrome 中没有错误,但在 Firefox(最新版本)中没有错误 - 你能找到错误吗?

最佳答案

改变这个:

css[i] = this.replace('{bind}', bindName, css[i]);

任何一个:

css[i] = this.replace('{bind}', bindName);

css[i] = v.replace('{bind}', bindName);

css[i] = css[i].replace('{bind}', bindName);

错误消息的原因是在 Firefox 中,String.replace 采用可选的第三个参数来表示正则表达式标志(例如 'i'' g');您正在为该参数传递 css[i] ,而 Firefox 将其解释为包含无效标志。 Chrome 给出错误消息的原因是它不支持该非标准功能,因此它完全忽略了该参数。

关于javascript无效的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9791108/

相关文章:

javascript - 正则表达式 (HTML/Javascript) - 获取所有数字和句号

javascript - 抓取 AJAX - 在 Python 中加载网站,我应该使用哪个 url

javascript - 通过输出的 document.write 设置文本样式

javascript - 如何创建像 jsfiddle 这样的所见即所得

javascript - 根据选择值自动生成 HTML 文本输入

javascript - 如何在不修改 "this"的情况下包装现有事件处理程序?

javascript - ag-grid:使用 Javascript,查找给定数据的行 ID

javascript - Highcharts 实时图表 : Accessing Datetime data returns an [Object] instead of [Datetime, Int]

javascript - 更改位置时出现 Safari 渲染问题 :fixed to position:relative

javascript - jQuery 表单验证,显示成功信息