如何在Node JS中执行Regex Match?

时间:2017-05-17 16:48:38

标签: javascript node.js regex

var http = require('http');
var fs = require('fs');
var extfs = require('extfs');
var exec = require('child_process').execSync;
var url = require('url');
const PORT=8282;

function handleRequest(request, response){

  var regex = fs.readFileSync('./output.txt', 'utf8');
  var res = regex.match(/<.*class='.*(post-title).*>\n.*</g);

  response.end(res);
}


var server = http.createServer(handleRequest);
server.listen(PORT, function(){
  console.log("Server listening on: http://localhost:%s", PORT);
});

以上是我的Node JS Web服务器,在运行时,将启动一个临时Web服务器,侦听端口8282.

我在https://regex101.com/测试了我的正则表达式,以确保它能够正确匹配。

我的问题是当我发出GET请求时,我的网络服务器会崩溃,我得到的错误是第一个参数必须是字符串或缓冲区我明白这是由于Node的异步性质JS和response.end(res)在上面的行完成之前先运行。

我不知道如何解决这个问题。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

不,它与异步执行无关,代码中的行是按顺序执行的。

你的问题是match()函数返回一个字符串数组,即既不是字符串也不是缓冲区