首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下午3:00至4:20的正则表达式

下午3:00至4:20的正则表达式
EN

Stack Overflow用户
提问于 2015-02-03 05:50:35
回答 2查看 74关注 0票数 0

我需要正则表达式才能找到特定的模式。

弦乐:在下午3:00至4:20在艾哈迈达巴德会面。

从这个字符串,我只需要下午3:00到4:20

和表达:

代码语言:javascript
复制
var time_range = message.match**(/(\w+)\s(to)\s(\w+)/gi)**

但这种表达方式有一定的局限性。

  1. 下午3时至6时在艾哈迈达巴德开会(工作还不错),但是
  2. 下午3:40至6:30在艾哈迈达巴德举行的会议(因为(:)有问题)
EN

回答 2

Stack Overflow用户

发布于 2015-02-03 05:55:15

这个正则表达式在大多数情况下都是有效的,而且它不会检查合适的时间。

代码语言:javascript
复制
\b(\d{1,2}(?::\d{1,2})?(?:[ap]m))\s(to)\s(\d{1,2}(?::\d{1,2})?(?:[ap]m))\b

演示

对于简单的情况,只需将:\w放入字符类中,并通过在该字符类旁边添加+量词使其重复一次或多次。

代码语言:javascript
复制
([:\w]+)\s(to)\s([:\w]+)

演示

票数 2
EN

Stack Overflow用户

发布于 2015-02-03 06:17:35

代码语言:javascript
复制
\d+(?::\d+)?\s*(?:[ap]m)?\s*to\s*\d+(?::\d+)?\s*(?:[ap]m)?

尝试this.See演示。

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

代码语言:javascript
复制
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.
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28292214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档