我真的很难为Julian Day创建Reg Ex,不允许前导零。

我将其用于使用JavaScript Reg Ex进行输入验证。它需要匹配1到366。

匹配示例:

  • 1
  • 99
  • 第366章
    159
    匹配失败示例:
  • 01
  • 001
  • 099章
    367章
  • 999
  • 0

  • 我在regex101上尝试过:



    但是因为我没有正确选择可选部件。所以当我输入266时,我得到了2和66的匹配。(此问题翻译成我的input validation control。)

    我考虑过尝试将+用作一个或多个,但是我不需要允许前导零,所以这是行不通的。

    我已阅读有关询问RegEx问题的guidance并尝试遵循它,但是如果我错过了什么,请告诉我,我将更新我的问题。

    最佳答案

    主要问题有两个:1)应该将替代项分组,以便可以将^$ anchor 应用于所有这些 anchor ; 2)[1-3][0-5][0-9]部分与160199不匹配,而260299不匹配,这部分应该被拆分分为两个单独的分支[12][0-9]{2}|3[0-5][0-9]

    您可以使用

    ^(?:[1-9]|[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])$
    

    参见regex demo

    详细信息
  • ^-字符串
  • 的开始
  • (?:-替代组:
  • [1-9]-1至9
  • |-或
  • [1-9][0-9]-1099
  • |-或
  • [12][0-9]{2}-100299
  • |-或
  • 3[0-5][0-9]-300359
  • |-或
  • 36[0-6]-360366
  • )-交替组
  • 的结尾
  • $-字符串的结尾。
  • 09-11 17:39