没有前导零的儒略日正则表达式
Julian Day Regex Without Leading Zeros
我真的很难为儒略日创建一个不允许前导零的 Reg Ex。
我使用它来使用 JavaScript Reg Ex 进行输入验证。它需要匹配 1 到 366。
示例匹配:
- 1
- 99
- 366
- 159
匹配失败示例:
- 01
- 001
- 099
- 367
- 999
- 0
我在 regex101 上试过这个:
^[1-9]|[1-9][0-9]|[1-3][0-5][0-9]|36[0-6]$
但是我没有把可选部件弄好。所以当我输入 266 时,我得到了 2 和 66 的匹配。(这个问题正在转化为我的 input validation control。)
我想尝试使用 +
作为一个或多个,但我需要不允许前导零,所以这行不通。
我已经阅读了 guidance 关于提出 RegEx 问题的内容并尝试遵循它,但如果我遗漏了什么,请告诉我,我会更新我的问题。
主要问题有两个:1) 应将备选方案分组,以便 ^
和 $
锚点可以应用于所有备选方案,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
)
- 交替组结束
$
- 和字符串的结尾。
我真的很难为儒略日创建一个不允许前导零的 Reg Ex。
我使用它来使用 JavaScript Reg Ex 进行输入验证。它需要匹配 1 到 366。
示例匹配:
- 1
- 99
- 366
- 159
匹配失败示例:
- 01
- 001
- 099
- 367
- 999
- 0
我在 regex101 上试过这个:
^[1-9]|[1-9][0-9]|[1-3][0-5][0-9]|36[0-6]$
但是我没有把可选部件弄好。所以当我输入 266 时,我得到了 2 和 66 的匹配。(这个问题正在转化为我的 input validation control。)
我想尝试使用 +
作为一个或多个,但我需要不允许前导零,所以这行不通。
我已经阅读了 guidance 关于提出 RegEx 问题的内容并尝试遵循它,但如果我遗漏了什么,请告诉我,我会更新我的问题。
主要问题有两个:1) 应将备选方案分组,以便 ^
和 $
锚点可以应用于所有备选方案,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
)
- 交替组结束$
- 和字符串的结尾。