gpt4 book ai didi

javascript - 匹配谷歌日历事件提要日期的正则表达式

转载 作者:行者123 更新时间:2023-11-30 08:46:32 26 4
gpt4 key购买 nike

我一直在尝试用 JavaScript 匹配来自谷歌日历 xml 提要的各种日期,但我失败得很惨。

目前我有这个正则表达式:

\s(.*)\s

以下是一些字符串示例(每个代码块都是一个字符串),我需要在其中进行匹配(注意斜杠和换行符):

字符串 1:

When: Thu Jan 9, 2014 1:50pm to 2:45pm 
GMT<br />

<br />Where: Hall A
&lt;br /&gt;Event Status: confirmed</content>

字符串 2:

When: Mon Jan 4, 2014&lt;br /&gt;


&lt;br /&gt;Event Status: confirmed</content>

字符串 3:

When: Mon Oct 27, 2013 to Fri Nov 1, 2013 
&lt;br /&gt;


&lt;br /&gt;Event Status: confirmed</content>

字符串 4:

When: Tue Oct 15, 2013 3:30pm to 7:30pm 
BST&lt;br /&gt;


&lt;br /&gt;Event Status: confirmed
&lt;br /&gt;Event Description: Please complete a booking.&amp;#39;s teacher.</content>

字符串 5:

When: Mon Apr 21, 2014 to Fri Apr 25, 2014 
&lt;br /&gt;


&lt;br /&gt;Event Status: confirmed</content>

所以我只想匹配格式为“Day Mon dd, year”或“Day Mon dd, year time”的日期。我不想要那之后的部分。我不需要“to”部分。

所以如果有时间的日期存在,它应该匹配那个,如果时间不存在那么它应该只匹配日期。

我对正则表达式很陌生,真的不知道该怎么做。我打算拿起一本关于它的书好好学习,但我必须尽快解决这个问题。

如果有人能帮助我,我将不胜感激。

最佳答案

由于您是 RegExp 的新手,让我告诉您有两种使用正则表达式模式的方法。

  1. 使用 new RegExp('pattern-here')

  2. 使用 javascript 语法 /pattern-here/flags

    第二个很简单:)

答案是

var regex = /(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9][0-9]|[0-9]),\s\d{4}\s([0-9][0-2]|[0-9]):([0-6][0-9]|[0-6]{2})(pm|am)|(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9][0-9]|[0-9]),\s\d{4}/g

这会满足您的要求。

abc123 的答案不匹配时间,而且它匹配非法日期

Hel Som 99, 9999

但我的没有。

使用它:

var matchDateRegex= /(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9][0-9]|[0-9]),\s\d{4}\s([0-9][0-2]|[0-9]):([0-6][0-9]|[0-6]{2})(pm|am)|(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9][0-9]|[0-9]),\s\d{4}/gm;

var s="some string with date Mon Jan 22, 2013 some thing Mon Jan 22, 2013 1:50pm";
var dates= s.match(matchDateRegex);

这将返回存储在 dates 变量中的匹配日期数组。

现在您可以通过索引访问日期。

注意:如果您只想使用没有javascript 语法的模式,那么请先删除
字符和最后三个字符('/' 和 '/gm')但是你需要做

var regex=new RegExp('(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9][0-9]|[0-9]),\s\d{4}\s([0-9][0-2]|[0-9]):([0-6][0-9]|[0-6]{2})(pm|am)|(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9][0-9]|[0-9]),\s\d{4}','gm');

如果有帮助,请将其标记为答案(我相信它会)

关于javascript - 匹配谷歌日历事件提要日期的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com