用于解析PING命令的信息的Javascript正则表达式

时间:2011-07-22 21:04:55

标签: javascript regex regular-language

我有一个在ping之后获取输出的脚本,输出如下所示:

var input = "PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.065 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.073 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.065 ms

--- localhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.065/0.067/0.073/0.010 ms"

我第一次尝试获取传输的数据包数量。所以我尝试使用这个正则表达式:(\ d +)* \ spackets

基本上匹配“NUMBER个数据包”似乎可以在这个网站上运行:http://www.regular-expressions.info/javascriptexample.html但是我无法复制它。

当使用匹配的正则表达式时,它也会失败,如下所示:

"42 packets".match('(\d+)*\spackets');

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Javascript正则表达式必须被正斜杠分隔符包围,以指示RegExp对象,而不是引号:

"42 packets".match(/(\d+)\spackets/);

以下是简短形式:

"42 packets".match(new RegExp('(\d+)\spackets'));

答案 1 :(得分:2)

match采用正则表达式对象,而不是字符串。

"42 packets".match(/(\d+)\spackets/);

此外,您不需要* - \d+匹配一个或多个数字字符,因此查找一个或多个整数的零个或多个组是多余的case *实际上意味着你可以拥有 0 或更多的一个或多个整数组...这意味着,正如Paul指出的那样,你可以有一个匹配仅在packets上。