有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

要匹配的Java正则表达式

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


共 (1) 个答案

  1. # 1 楼答案

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

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

    您的第二个选择(在|之后)是([0-4]+[_]+[0-4]){1,3},但[0-4]+本身将匹配1个或多个(无限数)数字。下一个术语[_]+将匹配一个或多个_字符(但也将只匹配_+),下一个术语[0-4]将匹配一个数字。按照{1,3}的规定,整个组可以重复1到3次。因此,这将匹配,例如,12312311123_____491293939__812___8,其中我使用高亮显示来显示三个重复组

    如果我明白你想匹配什么,那么你的正则表达式应该是:

    ^[0-4](_[0-4]){0,2}$
    
    1. ^匹配字符串的开头
    2. [0-4]匹配0到4范围内的单个数字
    3. (启动将重复的捕获组
    4. _匹配_
    5. [0-4]匹配0到4范围内的单个数字
    6. “)”完成从3点开始的捕获组
    7. {0,2}表示项目3定义的捕获组。到6点。可以重复0到2次
    8. $匹配字符串的结尾

    使用锚定符^$的目的是确保输入字符串中除了要匹配的字符外,没有其他无关字符

    See Regex Demo