Найти несколько регулярных выражений в массиве

Random rnd = new Random();
IQueryable<Detail> details = myList.OrderBy(x => rnd.Next()).Take(50);
4
задан Narendra Jadhav 13 July 2018 в 06:43
поделиться

2 ответа

Правильное выражение должно быть скорее: ^06|^07|^08|^09|^10|^11. Другой более краткий вариант: /^0[6-9]|^1[01]/

Пример выполнения:

var timeArray = ["00:05 - 02:50", "03:05 - 05:50", "05:10 - 07:55", "06:25 - 09:10", "07:55 - 10:40", "09:00 - 11:45", "15:10 - 17:55", "17:05 - 19:45", "18:50 - 21:35", "19:40 - 22:25", "20:45 - 23:40", "22:00 - 00:45", "22:40 - 01:25", "11:55 - 16:15"]

var resultArray = new Array();
for (var i = 0; i < timeArray.length; i++) {
  var bar = /^06|^07|^08|^09|^10|^11/;
  if (bar.test(timeArray[i])) {
    console.log("found desired timeslots: " + timeArray[i]);
    resultArray.push(timeArray[i]);
  }
};

1
ответ дан gil.fernandes 17 August 2018 в 13:31
поделиться
  • 1
    Если вы повторяете начало привязки строк, здесь вам не нужна конструкция группировки. var bar = /^06|^07|^08|^09|^10|^11/; будет делать. – Wiktor Stribiżew 13 July 2018 в 06:47
  • 2
    @ WiktorStribiżew да, вы правы. Я обновил ответ. – gil.fernandes 13 July 2018 в 06:49

Вы можете взять несколько групп для требуемого времени и использовать только один индикатор запуска.

var timeArray = ["00:05 - 02:50", "03:05 - 05:50", "05:10 - 07:55", "06:25 - 09:10", "07:55 - 10:40", "09:00 - 11:45", "15:10 - 17:55", "17:05 - 19:45", "18:50 - 21:35", "19:40 - 22:25", "20:45 - 23:40", "22:00 - 00:45", "22:40 - 01:25", "11:55 - 16:15"],
    resultArray = timeArray.filter(s => /^(0[6-9]|1(0|1))/.test(s));

console.log(resultArray);

3
ответ дан Nina Scholz 17 August 2018 в 13:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: