【问题标题】:Invalid RegEx in NodejsNodejs中的正则表达式无效
【发布时间】:2015-05-21 01:56:17
【问题描述】:

我在 NodeJS 中有一个 CORS 配置代码。如下:

var allowedOrigin = new RegExp('^https?://(' + config.get('http:allowedOrigins').join('|') + ')(:\\d+)?(/.*)?$');

它给出了这个错误

SyntaxError: Invalid regular expression: /^https?://(*.dev.examplewebsite.com|0.0.0.0|192.168.1.1|.*)(:\d+)?(/.*)?$/: Nothing to repeat
    at new RegExp (native)
    at Object.<anonymous> (/Users/yagiz/Desktop/example/project-api/src/lib/handlers/cors.js:4:21)

【问题讨论】:

标签: javascript regex node.js cors


【解决方案1】:

这里的问题是你需要对你连接的字符串中的特殊字符(例如点)进行转义。

找到here一个函数来转义正则表达式的字符串:

RegExp.escape= function(s) {
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};

var allowedOrigin = new RegExp(
    '^https?://(' +
    config.get('http:allowedOrigins').map(RegExp.escape).join('|') +
    ')(:\\d+)?(/.*)?$'
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2018-10-21
    相关资源
    最近更新 更多