javascript - Nodejs 中的无效正则表达式

标签 javascript regex node.js cors

我有一个 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)

最佳答案

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

查找here用于转义正则表达式字符串的函数:

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

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

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

相关文章:

javascript - https Nginx NodeJS SocketIO 和 CORS 请求失败

javascript - 如何在 javascript 中获取特定 HTML 标记的所有元素?

javascript - 响应我的命令的倒数计时器

javascript - 带计数器的图像 slider

ruby-on-rails - 使用 Ruby 从字符串中删除 bytesize 大于 2 的字符

python - 正则表达式和一个特殊字符本身

javascript - json:如何将 json 字符串转换为 javascript 对象

python - 在特定点移动名称中具有一位或两位数字的文件

node.js - 如何在nodejs中缓存hbs渲染的模板

javascript - 如何在 macos Catalina 上永久安装 NVM?