在Node.JS中从Javascript正则表达式返回NULL
Getting Back NULL from Javascript Regular Expressions in Node.JS
下面的代码是Node.js应用程序的一部分。我试图使用正则表达式来获得url部分,但有困难。当它被传递一个明显匹配的` req。Url '字符串,其中甚至regex.test(req.url)返回true,我从regex.match返回null。为什么如此?当我使用regex.match()而不使用regex.test()在前面时,我得到regex结果数组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');
regexp.exec()
调用regexp.test()
后失败的原因是regexp.test()
将regexp.lastIndex
设置为字符串的末尾,这是最后一次匹配结束的地方。
所以当regexp.exec()
执行时,它尝试从regexp.lastIndex
(字符串的末尾)开始,它永远不会匹配任何东西,因为它是同一个字符串。
您可以通过regexp.lastIndex = 0;
在regexp.test()
之后手动重置此属性。
相关文章:
- 如何匹配多个值使用正则表达式返回单个值
- 使用正则表达式返回部分字符串
- 为什么这个正则表达式返回前面的字符
- JavaScript 正则表达式返回拆分的结果
- Javascript从某些元素中提取日期与匹配和正则表达式返回空数组
- 如果关联数组从正则表达式返回,则对索引进行排序
- 正则表达式返回一些尴尬的值
- 正则表达式返回未捕获的组,而不是捕获的组
- Javascript 正则表达式返回空格之间的文本
- 正则表达式返回 javascript 变量
- 正则表达式返回未定义的字符串
- 正则表达式返回带有下划线组的未定义
- 正则表达式返回值,即使它不匹配
- Javascript:用于解析包含转义引号的带引号字符串的正则表达式-返回未终止的字符类
- 相同的正则表达式返回不同的结果
- 在Node.JS中从Javascript正则表达式返回NULL
- jQuery正则表达式返回意外结果
- 韩文和字母正则表达式返回false
- .match()对于密码的正则表达式返回null
- JavaScript正则表达式返回-1当>0是预期值