2015-02-03 2 views
0

Мне нужно регулярное выражение для поиска определенного шаблона.Регулярное выражение для 3:00 вечера до 4:20

Строка: На встрече с 3:00 до 4:20 в Ахмадабаде.

От этой строки мне нужно только с 3:00 до 4:20.

и выражение:

var time_range = message.match**(/(\w+)\s(to)\s(\w+)/gi)** 

, но это выражение имеет некоторые ограничения.

  1. Встречаясь 3pm до 6 вечера в Ахмадабаде (его работа штраф), но
  2. В заседании 3:40 вечера до 6:30 вечера в Ахмадабаде (чем там проблема из-за (:))
+0

Ваше регулярное выражение также будет соответствовать 'тряпке для riches', т.е. любых слов. Это проблема? –

+0

да, но у меня есть еще одно регулярное выражение для соответствия этим шаблонам. –

ответ

2

Это регулярное выражение будет работать в большинстве случаев, и оно не будет проверять правильное время.

\b(\d{1,2}(?::\d{1,2})?(?:[ap]m))\s(to)\s(\d{1,2}(?::\d{1,2})?(?:[ap]m))\b 

DEMO

Для простого случая, просто положить : и \w внутри класса символов и делает его повторять один или несколько раз, добавляя + квантор рядом с этим классом персонажа.

([:\w]+)\s(to)\s([:\w]+) 

DEMO

1
\d+(?::\d+)?\s*(?:[ap]m)?\s*to\s*\d+(?::\d+)?\s*(?:[ap]m)? 

Попробуйте this.See демо.

https://regex101.com/r/vD5iH9/49

var re = /\d+(?::\d+)?\s*(?:[ap]m)?\s*to\s*\d+(?::\d+)?\s*(?:[ap]m)?/gm; 
var str = 'In meeting 3:00pm to 4:20 at Ahmedabad.\nIn meeting 3pm to 6pm at Ahmedabad\nIn meeting 3:00pm to 4:20am at Ahmedabad.'; 
var m; 

while ((m = re.exec(str)) != null) { 
if (m.index === re.lastIndex) { 
re.lastIndex++; 
} 
// View your result using the m-variable. 
// eg m[0] etc. 
} 
Смежные вопросы