Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式在Linux中工作,但不在windows-node.JS中_Regex_Linux_Windows_Node.js - Fatal编程技术网

Regex 正则表达式在Linux中工作,但不在windows-node.JS中

Regex 正则表达式在Linux中工作,但不在windows-node.JS中,regex,linux,windows,node.js,Regex,Linux,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])); }

这里有一个小小的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);
}
如您所见,我使用正则表达式确保
absoluteURL
rootFolder
开头

这在Linux上运行良好,但在windows中它总是返回false

顺便说一句,输出是

ROOT: C:\Users\user\workspace
NEW: C:\Users\user\workspace\images\IMG_7102.JPG
所以我知道解析url是可以的

艾米知道为什么吗?
感谢Windows上的,路径中的
\
将成为正则表达式中的转义字符

您需要:


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

您需要:


但是rootFolder被分配为'C:\\users\\workspace',所以就我所知应该没有问题understand@Yotam:我想那是文字来源。这些转义符用于字符串文本;字符串的实际值只有一个``s。但是rootFolder被指定为'C:\\users\\workspace',因此就我而言,应该没有问题understand@Yotam:我想那是文字来源。这些转义符用于字符串文本;字符串的实际值只有一个``s。
rootFolder.replace(/[-[\/{}()*+?.\\^$|]/g, "\\$&")