【问题标题】:Unexpected token in valid RegEx when running webpack运行 webpack 时有效正则表达式中的意外令牌
【发布时间】:2018-09-12 15:11:43
【问题描述】:

我在 react / redux 应用程序的 util 文件中定义了以下 RegEx:

这很好用,如果我将其声明为字符串,也不会导致任何编译失败:

export const REGEX_VALID_URL =
  '^(https?://(www.)?)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$';

但是,如果我像这样将其声明为正则表达式文字:

 export const VALID_URL =
      /^(https?://(www.)?)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$/;

Webpack 将无法编译,并显示此错误: 模块构建失败:SyntaxError: Unexpected token (2:19)

  1 | export const VALID_URL =
> 2 |   /^(https?://(www.)?)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$/;
    |                    ^

这里有什么问题,我如何让 webpack 将此 RegEx 视为 Aok?

【问题讨论】:

  • 你可能只需要转义你的 /s
  • 你能举个例子吗?哪个/s?
  • 好吧,因为您使用 / 作为分隔符,所以您需要使用 \ /^(https?:\/\/(www.)?)[a- 转义正则表达式中的任何内容z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/. *)?$/
  • 解决了!如果您愿意,请提交答案,我将标记为已接受,否则我可以自行回答。谢谢!
  • 你也可以使用new RegExp(REGEX_VALID_URL);

标签: javascript reactjs webpack babeljs


【解决方案1】:

因为您使用 / 作为分隔符,所以您需要使用 \ 转义正则表达式中的任何内容

/^(https?:\/\/(www.)?)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/

应该是你所需要的。

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 2021-01-10
    • 2013-06-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2016-12-16
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多