从nodeJS中的字符串解析一些值

parsing some values from string in nodeJS

在 nodeJS 中解析为以下字符串以提取下述值的最佳方法是什么?

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

使用基本正则表达式:

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

我知道这可以缩短为多组匹配,但为了便于阅读,我尽量写得尽可能详细。

.

这在很大程度上取决于您的输入字符串是如何到达的,但假设它始终具有相同的格式,您可以这样做

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)

此外,如果变化更大,您可以使用正则表达式。 @jens-habegger 有一个很好的例子