【问题标题】:Putting regular expressions in strings将正则表达式放入字符串中
【发布时间】:2013-06-21 21:20:35
【问题描述】:

我正在尝试通过将字符串从 A 写入 .js 文件 B 来使用 javascript 文件 A(用 Node.js 编写)动态创建 javascript 文件 B。我想在 javascript 文件 B 中使用正则表达式. 这需要我将 B 的正则表达式函数放在 A 中的字符串中。但是,每当我使用反斜杠(转义字符)时,文件 A 会立即解释正则表达式函数,而不是将其视为字符串。

一些有助于理解我的问题的代码:

var mongodata = "Some String with square and curly brackets ]}{]]},]},}{}{{}},{[[][,][,";
mongodata = 'var mongodata = ' + mongodata + ';\n function setData(){mongodata = mongodata.replace(/\[ /g,"").replace(/\] \},/g,"</td></tr>").replace(/\] \}/g,"</td></tr>"); document.getElementById("mongodata").innerHTML = mongodata;}';

mongodata 字符串旨在用作动态创建的.js 文件的内容。

我理解这个问题的措辞可能有点令人困惑。如果需要更多说明,请告诉我。

【问题讨论】:

    标签: javascript html regex node.js escaping


    【解决方案1】:

    在您的字符串中,就像\n 字符一样,正在评估所有其他反斜杠表达式,因此您必须转义反斜杠。换句话说,编写一个输出 RegExp 的 RegExp。转义反斜杠本身的正确方法是 \\\ ,但您可能还需要转义其他字符以防止对其进行评估。

    【讨论】:

    • 谢谢!你非常亲近。您实际上需要一组三个反斜杠(`\\`)。但是感谢您将我推向正确的方向。 +1 +接受。
    • 很高兴为您提供帮助,也很抱歉造成误导,我不是 RegExp 专家。随意编辑我的答案!!!
    【解决方案2】:

    也许我误解了你的问题,但也许将分配给 mongodata 的字符串放在转义引号中:

    var mongodata = "\'Some String with square and curly brackets ]}{]]},]},}{}{{}},{[[][,][,\'";

    【讨论】:

      【解决方案3】:

      这个有点彩票。我也不太明白你的问题。

      您可以转义所有正则表达式特殊字符(. * ? [ ] 等)。您还可以使用以下方法动态创建 RegEx 运算符:

      var objRegEx = new RegExp( pattern, modifiers );
      

      就像我说的,彩票......在黑暗中刺伤......

      【讨论】:

        猜你喜欢
        • 2010-09-14
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-28
        相关资源
        最近更新 更多