要匹配的Java正则表达式 3 月,2 周 Questions & Answers 62 用于1或1_2或0_2_3字符串的正则表达式验证。所以它要么是一个数字,要么是最多3次的数字。 我试过[0-4]{1}||([0-4]+[_]+[0-4]){1,3} 这不是正确地进行验证
# 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}$ ^匹配字符串的开头李> [0-4]匹配0到4范围内的单个数字李> (启动将重复的捕获组李> _匹配_ [0-4]匹配0到4范围内的单个数字李> “)”完成从3点开始的捕获组李> {0,2}表示项目3定义的捕获组。到6点。可以重复0到2次李> $匹配字符串的结尾李> 使用锚定符^和$的目的是确保输入字符串中除了要匹配的字符外,没有其他无关字符 See Regex Demo
# 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-4]
匹配0到4范围内的单个数字李>{0,2}
表示项目3定义的捕获组。到6点。可以重复0到2次李>$
匹配字符串的结尾李>使用锚定符
^
和$
的目的是确保输入字符串中除了要匹配的字符外,没有其他无关字符See Regex Demo