Регулярное выражение Javascript для разбора информации от команды PING - PullRequest
0 голосов
/ 23 июля 2011

У меня есть скрипт, который получает вывод после пинга, вывод выглядит так:

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 ]

3 голосов
/ 23 июля 2011

Регулярное выражение Javascript должно быть заключено в разделители прямой косой черты для обозначения объекта RegExp, а не кавычек:

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

Что является краткой формой для:

"42 packets".match(new RegExp('(\d+)\spackets'));
2 голосов
/ 23 июля 2011

match принимает объект регулярного выражения, а не строку.

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

Кроме того, вам не нужно, чтобы * - \d+ соответствовал одному или нескольким числовым символам, , поэтому поиск нуля или нескольких групп из одного или нескольких целых чисел в вашем случае является излишним и * фактически означает, что вы можете иметь 0 или более групп из одного или нескольких целых чисел ... что означает, как указывает Павел, что вы можете иметь совпадение только на packets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...