0

我有一个在 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');

有任何想法吗?

4

2 回答 2

3

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

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

这是以下的简写形式:

"42 packets".match(new RegExp('(\d+)\spackets'));
于 2011-07-22T21:07:21.207 回答
2

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

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

此外,您不需要*--\d+匹配一个或多个数字字符,因此,在您的情况下,寻找零个或多个由一个或多个整数组成的组是多余的*实际上意味着您可以拥有0个或多个由一个或多个整数组成的组......这意味着,正如 Paul 指出的那样,您可以packets单独进行匹配。

于 2011-07-22T21:08:19.407 回答