Regex 正则表达式在Linux中工作,但不在windows-node.JS中
这里有一个小小的web服务器函数,它获取url并对其进行解析,确保客户端不会请求不在服务器根文件夹下的资源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])); }
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, "\\$&")