代码之家  ›  专栏  ›  技术社区  ›  Veyis Aliyev

Javascript正则表达式/^(19 | 20)([0-9]{2})-([0-9]{2}0[0-9]{1})-([0-9]{2}0[0-9]{1})$/g没有找到日期作为输入值

  •  2
  • Veyis Aliyev  · 技术社区  · 7 年前

    谢谢你。 我创造了一个

    /^(19|20)([0-9]{2})-([0-9]{2}|0[0-9]{1})-([0-9]{2}|0[0-9]{1})$/g
    

    我测试过了 Here . 在浏览器中工作但不在浏览器中

    3 回复  |  直到 7 年前
        1
  •  1
  •   Vqf5mG96cSTT    7 年前

    你应该能够写你的正则表达式如下。

    (19|20)\d{2}-\d{2}-\d{2}
    

    查看以下JS代码片段:

    var date = ' 2019-04-03 ';
    var regex = /(19|20)\d{2}-\d{2}-\d{2}/g;
    var result = date.match(regex);
    
    console.log(result[0]);

    根据您用来匹配正则表达式的字符串,使用^和$可能会给您带来麻烦。使用^断言行首的位置。使用$断言行末尾的位置。当然,这意味着如果字符串是“1999-01-01”,并且在同一行上有空格或任何其他文本,则它将不匹配。

    请注意,如果你想让它工作任何一年,而不仅仅是1900年至2099年,你必须使用下面的一个。

    \d{4}-\d{2}-\d{2}
    

    Regex to validate date format dd/mm/yyyy 比如闰年之类的。根据您的用例,让Javascript进行验证可能更容易。

        2
  •  2
  •   arizafar    7 年前

    下面的正则表达式应该执行预期的检查。

    \((19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))\
    
        3
  •  0
  •   Veyis Aliyev    7 年前

    var date = ' 2019-04-03 ';
    var regex = /(19|20)\d{2}-\d{2}-\d{2}/g;
    var result = date.match(regex);
    
    console.log(result[0]);