从nodeJS中的stringparsing一些值

nodeJSparsing下面的string来提取下面描述的值的最好方法是什么?

client 111.222.333.44#59699: query: jadssdffsdnisa.website.com IN A -ED (81.11.11.175) 

当前代码:

 //parsing var c_ip = data.split("client ")[1].split("#")[0] var sdomain = data.split("query:")[1].split(".")[0] console.log("c_ip: " + c_ip + '\n'); console.log("sdomain: " + sdomain + '\n'); 

结果是:

 c_ip: 130.225.244.66 sdomain: paul 

这很大程度上取决于你的inputstring是如何到达的,但假设它总是有相同的格式,你可以做这样的事情

 var task = "client 111.222.333.44#59699: query: jadssdffsdnisa.website.com IN A -ED (81.11.11.175)" var c_ip = task.split("client ")[1].split("#")[0] var sdomain = task.split("query: ")[1].split(".")[0] console.log("c_ip:", c_ip) console.log("sdomain:", sdomain) 

使用基本的正则expression式:

 var string = "client 111.222.333.44#59699: query: jadssdffsdnisa.website.com IN A -ED (81.11.11.175)" var c_ip_reg = /client\s(.*)#/; var c_ip = string.match(c_ip_reg); var sdomain_ref = /query:\s(.*?)\/; var sdomain = string.match(sdomain_ref); 

我知道这可以缩短为一个多组的比赛,但为了可读性,我尽可能地尽量详细。