我真的很难为Julian Day创建Reg Ex,不允许前导零。
我将其用于使用JavaScript Reg Ex进行输入验证。它需要匹配1到366。
匹配示例:
159
匹配失败示例:
367章
我在regex101上尝试过:
但是因为我没有正确选择可选部件。所以当我输入266时,我得到了2和66的匹配。(此问题翻译成我的input validation control。)
我考虑过尝试将
+
用作一个或多个,但是我不需要允许前导零,所以这是行不通的。我已阅读有关询问RegEx问题的guidance并尝试遵循它,但是如果我错过了什么,请告诉我,我将更新我的问题。
最佳答案
主要问题有两个:1)应该将替代项分组,以便可以将^
和$
anchor 应用于所有这些 anchor ; 2)[1-3][0-5][0-9]
部分与160
和199
不匹配,而260
与299
不匹配,这部分应该被拆分分为两个单独的分支[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]
-10
到99
|
-或[12][0-9]{2}
-100
到299
|
-或3[0-5][0-9]
-300
到359
|
-或36[0-6]
-360
到366
)
-交替组$
-字符串的结尾。