我有一个在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');
有什么想法吗?
答案 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
上。