Node.js Синтаксический анализ числа внутри строки

#regex #node.js #serverside-javascript

#регулярное выражение #node.js #серверная часть-javascript

Вопрос:

Учитывая строку, подобную:

 Recipient: test@test.com
Action: failed
Status: 5.0.0 (permanent failure)
Diagnostic: No
  

Как мне получить «5.0.0» и «постоянный сбой», только если это всегда после Status : ? ?

Спасибо

Ответ №1:

 var regex = /Status: ([0-9.] ) (([a-zA-Z ] ))/
var result = string.match(regex);
var statusNumber = result[1];
var statusString = result[2];
  

Вам следует расширить эти селекторы: [0-9 .], [a-zA-Z ], если вы ожидаете, что в этих значениях будут другие символы. На данный момент первое ожидает цифр и точек, второе символов и пробелов

Комментарии:

1. Почему это одно регулярное выражение возвращает 2 результата?

2. Также там не должно быть ^ и $

3. @haemse Возвращает два результата, потому что в нем есть две группы захвата. На самом деле оно возвращает три, причем первое (с индексом 0) является полным совпадением. ^ и $ не было в исходном ответе. Я их удалил. Спасибо.

4. Извините, похоже, что str.match (reg) возвращает массив всех совпадений, тогда как reg.exec возвращает массив с подробностями для одного результата. Также все соответствующие группы.