以下是示例字符串,它是Flight No + Selling Code + Departure Date
的组合。
航班No具有[A-Z]{2}\d{3,5}
之类的模式,并且销售代码为单个字符。我要从中记录出发日期
AA78654UT2018年10月11日星期四SI9089U 2018年10月11日星期五WW0461X 2018年10月26日星期一GF00356Z 2018年10月26日星期日
我尝试过使用正则表达式,但未获得预期的输出结果
((?<=[A-Z]{2}\d{3,5}[A-Z, a-z]{1}).*[0-9]{4}((?<=[A-Z]{2}\d{3,5})|$))
预期输出为:
2018年10月11日星期四
2018年10月11日星期五
2018年10月26日星期一
2018年10月26日,星期日
能否请您帮我改进正则表达式以获取出发日期?
答案 0 :(得分:1)
尝试以下操作
window.onload = function()
{
var source = 'AA78654UThursday 11 October 2018'
var regex = /[A-Z]{2}\d{3,5}\w{1}/g
var matches = regex.exec(source)
if (matches)
{
source = source.replace(matches, "");
console.log(source);
}
}
答案 1 :(得分:1)
这是正则表达式/.+((?:Sun|Mon|Tue|Wed|Thu|Fri|Sat).+)/
我使用非捕获括号列出了一周中每一天的3个首字母的所有可能性
捕获一周中的任何一天,都从不捕获括号中找到,后跟任意字符
var chains = [
"AA78654UThursday 11 October 2018",
"SI9089UFriday 11 October 2018",
"WW0461XMonday 26 October 2018",
"GF00356ZSunday 26 October 2018"
];
var pattern = /.+((?:Sun|Mon|Tue|Wed|Thu|Fri|Sat).+)/
var dates = [];
chains.forEach(function(chain) {
$matches = chain.match(pattern);
dates.push($matches[1]);
});
console.log(dates);
答案 2 :(得分:0)
您可以使用[A-Z]{2}\d{3,5}[A-Z, a-z]{1}(\D*[0-9]{1,2}\D*[0-9]{4})
,
这将使您想要的输出与捕获组(\D*[0-9]{1,2}\D*[0-9]{4})
相匹配。它将匹配任意数量的非数字字符(日期),1-2个数字(以数字的日期表示),再匹配任何非数字字符以匹配月份,并匹配4个数字以匹配年份。
答案 3 :(得分:0)
您可以使用的正则表达式为 /((星期一|星期二|星期三|星期四|星期五|星期六|星期日)+。+ $#,但是最后一部分不包含捕获组。如果您还想捕获此部分,则应将整个正则表达式用括号括起来。
答案 4 :(得分:0)
您可以使用for ... in
循环和String.replace()
删除初始信息。
let dateArray = [
'AA78654UThursday 11 October 2018',
'SI9089UFriday 11 October 2018',
'WW0461XMonday 26 October 2018',
'GF00356ZSunday 26 October 2018'
];
const regex = /[A-Z]{2}\d{3,5}\S/g;
for (let i in dateArray) dateArray[i] = dateArray[i].replace(regex, '');
console.log(dateArray);
答案 5 :(得分:0)
对于刚出发的日期:
v$hd
说明
(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)\s([123][0-9])\s(January|February|March|April|May|June|July|August|September|October|November|December)\s(\d{4})
匹配全部内容:
(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday) // Match Day
\s // Blank Space after day
([123][0-9]) // Match date
\s // Blank Space after date
(January|February|March|April|May|June|July|August|September|October|November|December) // Match month
\s // Blank space after month
(\d{4}) // Match Year
第1组:航班号
第2组:销售代码
第3组:完整的出发日期
第4组:出发日
第5组:出发日期
第6组:出发月份
第7组:出发年份
答案 6 :(得分:0)
感谢您的所有答复。
在上述所有回复的帮助下,我构建了一个正则表达式以获取如下的出发日期
((?<=[A-Z]{2}\d{3,5}[A-Z, a-z]{1})(\D*[0-9]{1,2}\D*[0-9]{4}))
这很好用。
感谢帮助!
答案 7 :(得分:0)
可怜的男人的正则表达式。
/[A-Z][a-z]+day.+?\d{4}/g