Регулярное выражение только для получения даты - PullRequest
0 голосов
/ 29 июля 2009

У меня есть решение для моего вопроса, но я пытаюсь поправиться в регулярных выражениях, особенно в javascript. Я просто хотел донести это до сообщества, чтобы посмотреть, смогу ли я написать это лучше.

Итак, я получаю строку datetime из .net, и мне нужно извлечь из нее дату.

В настоящее время у меня есть:

var time = "2009-07-05T00:00:00.0000000-05:00".match(/(^\d{4}).(\d{2}).(\d{2})/i);

Как я уже сказал, это работает, но я надеялся сделать его более прямым, чтобы получить только год, месяц и день в массиве. Я получаю 4 результата, первый из которых ГГГГ-ММ-ДД, ГГГГ, ММ, ДД.

По сути, я просто хочу вернуть 3 результата, не столько, чтобы это не сработало (потому что я могу просто проигнорировать первый индекс в массиве), но чтобы я мог научиться использовать регулярные выражения немного лучше.

Ответы [ 2 ]

2 голосов
/ 29 июля 2009

Каждый раз, когда у вас есть круглые скобки в регулярном выражении, будет также возвращено значение, соответствующее этим круглым скобкам.

  • time[0] - это то, что соответствует всему выражению
  • time[1] - это то, что соответствует ([\ d] {4}), то есть год
  • time[2] соответствует первому ([\ d] {2}), то есть месяцу
  • time[3] - это то, что соответствует второму ([\ d] {2}), то есть дате

Вы не можете изменить это поведение, чтобы удалить time[0], и вы на самом деле этого не хотите (поскольку базовый код уже генерирует его, его удаление не даст никакого выигрыша в производительности).

Если вам не нужно возвращать значение из выражения в скобках, вы можете использовать (?:expression), чтобы сделать его несоответствующим.

0 голосов
/ 29 июля 2009

Я не думаю, что вы можете сделать это, но вы можете сделать

var myregexp = /(^\d{4})-(\d{2})-(\d{2})/g;
var match = myregexp.exec(subject);
while (match != null) {
    for (var i = 1; i < match.length; i++) {
        // matched text: match[i]
    }
    match = myregexp.exec(subject);
}

А затем просто цикл из индекса 1. Первый элемент в массиве - это совпадение, а затем группы являются потомками этого совпадения

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