如何匹配字符串中的日期
How to match date in string
>我试图从文本块中梳理出一个日期。据我所知,日期看起来总是类似于Mar 5, 2015
(三个字母的月份,没有前导零的日,四位数的年份)。
但是,文本块的可变性更大一些。在大多数情况下,它通常看起来像这样:
我们理解有时您的旅行计划会发生变化。我们不收取更改或取消费用。但是,此酒店(酒店名称)对其客户施加以下罚款,我们需要转嫁: 2015 年 3 月 10 日东部时间上午 11:59((GMT-05:00)(美国和加拿大))之后取消或更改将收取 1 晚房费和税费罚款。酒店对未入住或提早退房不予退款。
这是我的尝试(val
是包含字符串的变量):
var valDate = val.match("'''''')'''''') on (.*)are");返回价值[1];
如您所见,我选择了两个))在时区的末尾(我相信它将永远存在,无论美国东部标准时间/太平洋标准时间/等如何)和紧随日期之后的"是"。
这工作得很好。直到我的一家酒店通过了以下:
我们理解有时您的旅行计划会发生变化。我们不收取更改或取消费用。但是,此酒店(酒店名称)对其客户施加以下罚款,我们需要转嫁:在 2015 年 3 月 15 日东部时间下午 6:00((GMT-05:00)(美国和加拿大))之前取消或更改将收取 1 晚客房和税费罚款。在2015年3月15日下午6:00((GMT-05:00)东部时间(美国和加拿大))之后取消或更改将收取1晚房费和税费罚款。酒店对未入住或提早退房不予退款。
我的代码返回:
Mar 15, 2015 are subject to a 1 Night Room & Tax penalty. Cancellations or changes made after 6:00 PM ((GMT-05:00) Eastern Time (US & Canada)) on Mar 15, 2015
这是不太理想的地方。我想我明白为什么会发生这种情况,但请尝试尽管我可能不会修复它。此外,我的原始match
诚然是笨拙的(因此这个问题)。我猜可能有更好的方法来梳理日期......我只是不知道怎么做。
有人可以帮助我吗?我将永远感激不尽!
可以匹配您给出的描述的模式是:
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)'s+([0-9]|[1-2][0-9]|3[0-1]),'s+'d{4}
正则表达式 101 演示
虽然我相信如果你想捕捉日期,你最好找一个图书馆来做到这一点。这样的库可能不太容易出错,将具有不同的日期模式,并且可能更容易自定义。
您可以捕获组,如以下答案所示:
var r = /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)'s+([0-9]|[1-2][0-9]|3[0-1]),'s+'d{4}/g;
var t = "We understand that sometimes your travel plans change. We do not charge a change or cancel fee. However, this property (Hotel Name) imposes the following penalty to its customers that we are required to pass on: Cancellations or changes made after 11:59 AM ((GMT-05:00) Eastern Time (US & Canada)) on Mar 10, 2015 are subject to a 1 Night Room & Tax penalty. The property makes no refunds for no shows or early checkouts.";
m = r.exec(t);
while (m != null) {
//do something with m[0]
alert(m[0]);//example
m = r.exec(t);
}
JSFiddle.
- 在JavaScript中拆分日期字符串的更好方法是什么
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 如何将日期字符串视为格式化数组[EYEAR,MONTH,DAY]
- 分析特定区域设置(而不是时区!)中的日期字符串
- PHP strtotime()为JavaScript日期字符串返回false
- 如何将毫秒转换为日期字符串
- 正在使用日期字符串初始化javascript日期对象
- 新Date()javascript的日期字符串
- 使用moment.js分析日语日期字符串
- 将日期字符串转换为数字以进行比较
- 分析具有不同日期格式的日期字符串
- 将带有 AM/PM 的日期字符串转换为 javascript 日期对象
- 将日期字符串转换为另一种语言
- 日期 ISO 日期字符串问题
- JavaScript 时刻格式日期字符串
- Javascript使用php日期字符串显示2014年而不是2013年
- MomentJS从日期字符串解析午夜本地
- Javascript Date对象到日期字符串
- 如何使用Javascript将iOS日期字符串转换为格式化日期
- 将日期字符串隐藏到日期对象中