以下代码是Node.js应用程序的一部分.我试图使用正则表达式来获取url部分,但很难.当传递一个明显匹配的'req.url'字符串,即使regex.test(req.url)返回true,我也会从regex.match返回null.为什么这样?当我使用regex.match()而不使用前面的regex.test()时,我得到正则表达式结果数组OK ...但我需要在实际应用程序中执行regex.test().在regex.test()之后立即使用regex.match()是否可行/合法?
例如,当req.url = "/?format=html&path=/news/crawl/2015/10/01/http---newssite.com--crawl.html"我从regex.match获得null时.实际上,没有字符串与以下代码匹配:
http.createServer(function (req, res) {
if (req.method == 'GET') {
var readRegex = /\?format=(json|html|txt)&path=([\w.\/_-]+)/g;
var file_path, regex_results;
console.log(req.url);
switch (true) {
case readRegex.test(req.url):
regex_results = readRegex.exec(req.url);
if (regex_results !== null) {
console.log(regex_results);
} else {
console.log("Error: 'regex_results' is null!");
}
break;
}
} else {
res.writeHead(503, {'Content-Type': 'application/json'});
res.end("{'error':'Method not yet implemented!'}");
}
}).listen(22000, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud) 通常,我们使用点表示法访问json对象元素,即var obj = {"key": "value"}; var val = obj.key;.我们如何获取价值var obj = {"key-with-hyphens": "value"};?我是否必须恢复到[]即var val = obj['key-with-hyphens'];?