要匹配的Java正则表达式

要匹配的Java正则表达式,java,regex,string,Java,Regex,String,用于1或1_2或0_2_3字符串的正则表达式验证。所以它要么是一个数字,要么是最多3次的数字。 我试过[0-4]{1}| |([0-4]+[[u]+[0-4]){1,3} 这没有正确执行验证。首先,您指定了两个由|分隔的备选选项: [0-4]{1}匹配0-4范围内的一个数字,但是{1}是完全多余的,因为[0-4]做同样的事情 您的第二个选择(在|之后)是([0-4]+[[u]+[0-4]){1,3},但是[0-4]+本身将匹配一个或多个(无限数量)数字。下一个术语将与一个或多个字符相匹配(但也将

用于1或1_2或0_2_3字符串的正则表达式验证。所以它要么是一个数字,要么是最多3次的数字。 我试过
[0-4]{1}| |([0-4]+[[u]+[0-4]){1,3}

这没有正确执行验证。

首先,您指定了两个由
|
分隔的备选选项:

[0-4]{1}
匹配0-4范围内的一个数字,但是
{1}
是完全多余的,因为
[0-4]
做同样的事情

您的第二个选择(在
|
之后)是
([0-4]+[[u]+[0-4]){1,3}
,但是
[0-4]+
本身将匹配一个或多个(无限数量)数字。下一个术语将与一个或多个字符相匹配(但也将只与字符相匹配),下一个术语将与单个数字相匹配。然后,整个组可以按照
{1,3}
的规定重复1到3次。因此,这将匹配,例如,12312311123\uuuuuuuuuuuuuu491293939\uuuuuuuuu812\uuuuuuuu8,在这里我使用突出显示来显示三个重复组

如果我理解您试图匹配的内容,那么您的正则表达式应该是:

^[0-4](_[0-4]){0,2}$
  • ^
    匹配字符串的开头
  • [0-4]
    匹配0到4范围内的单个数字
  • 启动将重复的捕获组
  • \uu
    匹配一个
    \u
  • [0-4]
    匹配0到4范围内的单个数字
  • “)`完成从3开始的捕获组
  • {0,2}
    表示由项目3定义的捕获组。到6。可重复0至2次
  • $
    匹配字符串的结尾
  • 使用锚点
    ^
    $
    的目的是确保输入字符串中除了要匹配的字符外,没有其他无关字符

    [0-4]([0-4]){0,2}