仅在正则表达式中获取完整日期
Get Full Date Only in Regex
我有包含日期的字符串。我只想得到 full date
。
如果没有年份,就加上当前的4位数年份。
样本
Nov 29 2019
abc 0 May 30 2020
ddd Apr 3 2021 efg
0 Jan 3 hellodewdde deded
https://regex101.com/r/pLUQNe/1
正则表达式
(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{1,2}?)
您可以使用以下正则表达式模式:
(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{1,2}(?: \d{4})?
var dates = ["Nov 29 2019", "abc 0 May 30 2020", "ddd Apr 3 2021 efg", "0 Jan 3 hellodewdde deded", "Green eggs and ham"];
var months = "(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)";
var regex = new RegExp(months + " \d{1,2}(?: \d{4})?");
var matches = [];
for (var i=0; i < dates.length; ++i) {
var date = dates[i].match(regex);
if (date != null) {
if (date[0].match(/ \d{4}$/)) {
matches.push(date[0]);
}
else {
matches.push(date[0] + " " + new Date().getFullYear());
}
}
}
console.log(matches);
这里的逻辑是我们检测匹配日期是否有结束的 4 位数年份。如果不是,那么我们将当前年份附加到 month/day 匹配。
我有包含日期的字符串。我只想得到 full date
。
如果没有年份,就加上当前的4位数年份。
样本
Nov 29 2019
abc 0 May 30 2020
ddd Apr 3 2021 efg
0 Jan 3 hellodewdde deded
https://regex101.com/r/pLUQNe/1
正则表达式
(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{1,2}?)
您可以使用以下正则表达式模式:
(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{1,2}(?: \d{4})?
var dates = ["Nov 29 2019", "abc 0 May 30 2020", "ddd Apr 3 2021 efg", "0 Jan 3 hellodewdde deded", "Green eggs and ham"];
var months = "(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)";
var regex = new RegExp(months + " \d{1,2}(?: \d{4})?");
var matches = [];
for (var i=0; i < dates.length; ++i) {
var date = dates[i].match(regex);
if (date != null) {
if (date[0].match(/ \d{4}$/)) {
matches.push(date[0]);
}
else {
matches.push(date[0] + " " + new Date().getFullYear());
}
}
}
console.log(matches);
这里的逻辑是我们检测匹配日期是否有结束的 4 位数年份。如果不是,那么我们将当前年份附加到 month/day 匹配。