这里有一个小的web服务器函数,它获取一个url并parsing它,确保客户端不需要一个不在服务器的根目录下的资源
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
通过使用正则expression式'^' + rootFolder + '.*'
来启动rootFolder
这在Linux上运行良好,但在Windows中它总是返回false。
顺便说一下,输出是
ROOT: C:\Users\user\workspace NEW: C:\Users\user\workspace\images\IMG_7102.JPG
所以我知道parsing的url是好的。
艾米的想法是为什么? 谢谢
在Windows上,路径中的\
成为正则表达式中的转义字符。
你需要正则表达式逃避它:
rootFolder.replace(/[-[\/{}()*+?.\\^$|]/g, "\\$&")