繁体   English   中英

正则表达式可在Linux中工作,但不能在Windows中工作-node.js

[英]Regex working in Linux but not in windows - node.JS

这是一个Web服务器的小功能,它获取一个url并对其进行解析,以确保客户端没有要求的资源不在服务器的根文件夹下

function getUrl(url, resourceMap, rootFolder) {
    var path = require('path');
    if (typeof resourceMap[url] !== 'undefined') {
        return (path.join(rootFolder,resourceMap[url]));
    } 
    var absoluteURL = path.join(rootFolder,url);
    console.log("ROOT: "+rootFolder);
    console.log("NEW: "+absoluteURL);
    var regex = new RegExp('^' + rootFolder + '.*')
    if (absoluteURL.match(regex) === null) {
        console.log("FALSE");
        return (false);
    }
    return (absoluteURL);
}

如您所见,我使用正则表达式'^' + rootFolder + '.*'确保absoluteURLrootFolder开头

这在Linux上运行良好,但在Windows中始终返回false。

顺便说一句输出是

ROOT: C:\Users\user\workspace
NEW: C:\Users\user\workspace\images\IMG_7102.JPG

因此,我知道该网址的解析是可以的。

艾米的想法为什么? 谢谢

在Windows上,路径中的\\成为正则表达式中的转义字符。

您需要对其进行正则表达式转义

rootFolder.replace(/[-[\/{}()*+?.\\^$|]/g, "\\$&")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM