首页 文章

正则表达式从下面捕获日期字符串

提问于
浏览
0

以下是样本字符串,它是 Flight No + Selling Code + Departure Date 的组合 .

航班没有类似 [A-Z]{2}\d{3,5} 的模式,销售代码是单个角色 . 我想从中捕获出发日期

AA78654UThursday 2018年10月11日20190年20190年10月11日2018年WW0461XMonday 2018年10月26日GF00356ZSunday 2018年10月26日

我试过Regex但没有得到预期的输出

((?<=[A-Z]{2}\d{3,5}[A-Z, a-z]{1}).*[0-9]{4}((?<=[A-Z]{2}\d{3,5})|$))

预期产出是:
Thursday 11 October 2018 Friday 11 October 2018 Monday 26 October 2018 Sunday 26 October 2018

你能帮我改进正则表达式来获取出发日期吗?

8 回答

  • 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个数字以匹配年份 .

  • 0

    感谢您的所有回复 .

    在上述所有回复的帮助下,我 Build 了一个正则表达式,以获得如下的出发日期

    ((?<=[A-Z]{2}\d{3,5}[A-Z, a-z]{1})(\D*[0-9]{1,2}\D*[0-9]{4}))

    它完美地工作 .

    感谢帮助!!

  • 0

    这是正则表达式 /.+((?: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);
    
  • 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);
    }
    
    }
    
  • 0

    穷人的正则表达 .

    /[A-Z][a-z]+day.+?\d{4}/g
    
  • 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);
    
  • 1

    您可以使用的正则表达式是 /(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)+.+$# ,但最后一部分不包含捕获组 . 如果您还想捕获此部分,则应将整个正则表达式括在括号中 .

  • 0

    出发日期:

    (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
    

    匹配整件事:

    ([A-Z]{2}\d{3,5})([A-Z])((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}))
    

    Group #1: 航班号
    Group #2: 销售代码
    Group #3: 完成出发日期
    Group #4: 出发日
    Group #5: 出发日期
    Group #6: 离境月
    Group #7: 出发年份

相关问题