【问题标题】:javascript Invalid regular expression with token '\'带有标记'\'的javascript无效正则表达式
【发布时间】:2015-03-17 14:48:50
【问题描述】:

我创建了以下正则表达式来查找与完整路径中的单词匹配且不包含点字符的 URL。

(\path\?*)([^.]*)$

它适用于https://www.regex101.com/#javascript,但在我定义此连接任务时连接任务中的咕噜声:

middleware: function(connect, options) {
 var middlewares = [];

 middlewares.push(modRewrite(["(\path\?*)([^.]*)$ /home.html [L]"])); 
    options.base.forEach(function(base) {
      middlewares.push(connect.static(base));
    });
    return middlewares;
  }

我收到此错误:Invalid regular expression: /(home?*)([^.]*)$/: Nothing to repeat 和 IDE 在“路径”字之间的两个斜杠 (\path\) 中警告我。

为什么我可以使用这些斜线? 我可以用什么来代替那些斜线? 非常感谢

【问题讨论】:

  • "(\\path\\?*)([^.]*)$ /home.html [L]"

标签: javascript regex grunt-contrib-connect connect-modrewrite


【解决方案1】:

\ 是 javascript 中的一个特殊字符,因此如果您打算使用它,则需要对其进行转义。您可以通过添加另一个\ 来逃避它。例如:\\

【讨论】:

    【解决方案2】:

    反斜杠属于“Javascript 特殊字符”

    因为您在双引号字符串中使用了反斜杠,所以您必须将每个反斜杠写入两次以告诉解析器您实际上想要输出一个反斜杠。 这在双引号和单引号字符串中是强制性的。

    您可以浏览文档 .. 例如 MDN documentation

    然后搜索“JavaScript 特殊字符”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 2022-01-25
      • 2011-11-21
      相关资源
      最近更新 更多