2017-05-17 15 views
0

ノードJSで正規表現一致を実行するにはどうすればよいですか?

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); 
 
});

以上実行している時に、私が確認するためにhttps://regex101.com/で私の正規表現をテストしてみたポート8282.

でリスニング一時的なWebサーバを起動します私のノードJSのWebサーバですそれは適切に一致することができます。

私の問題は、私がGET要求を行うとき、私のWebサーバがクラッシュすると、私が手にエラーが最初の引数は、私はこれが得たノードJSとresponse.end(res)の非同期性によるものであることを理解文字列またはバッファでなければならないです上記の行が完了する前にまず実行してください。

これを修正する方法がわかりません。どんな提案も大歓迎です。

+0

を返すということですか? – Jan

+0

以前はパーサを使っていませんでした。どのように動作するのか教えてください。私は実用的な例が素晴らしいでしょう。 –

答えて

1

いいえ、非同期実行とは関係ありません。コード内の行は順番に実行されます。

あなたの問題は、あなたの代わりにパーサを使用していないのはなぜmatch()関数は、文字列の配列、すなわち、文字列のいずれもバッファ

+0

エラーを指摘してくれてありがとう。この場合、私は 'match()'を使い続けるべきですか、Node JSでregexを行うためのよりよい方法がありますか? –

+0

@KelvinLowEeHahn私は他の何かを使用する理由がありません。もちろん、あなたが達成しようとしているものに依存します。単純なマッチングより複雑なものが必要な場合は、RegExp 'exec()'関数を見てください –

関連する問題