代码之家  ›  专栏  ›  技术社区  ›  aggicd

2种日期格式的正则表达式

  •  1
  • aggicd  · 技术社区  · 8 年前

    我想允许两种不同的日期格式:

    2017年1月1日和2017年1月1日

    我正在使用这个正则表达式,但它不起作用:

    re = /^(\d{1,2})\/(\d{1,2})\/(\d{4})|[0-9]{1,2}\-[a-zA-Z]{3}\-[0-9]{4}/;
    
    1 回复  |  直到 8 年前
        1
  •  5
  •   Wiktor Stribiżew    8 年前

    将备选方案分组,并添加字符串末端锚点:

    re = /^(?:\d{1,2}\/\d{1,2}\/\d{4}|\d{1,2}-[a-zA-Z]{3}-\d{4})$/;
           ^^^                       ^                         ^^
    

    请参阅 regex demo .

    ^ 仅适用于 (\d{1,2}) ,并在字符串中的任何位置搜索另一个替代项。

    $ 锚点,即使找到的模式不在字符串的末尾,模式也可以匹配(您将获得部分匹配)。