首页 > 解决方案 > Java RegExp 用于一组单独的数字

问题描述

我正在尝试编写一个正则表达式验证:1 到 99 之间的一组(或多组)数字由|or分隔,(两者都可以组合)

例子

必须接受:

1
10
1,2,3|5|10,20|30
1|5

必须拒绝:

1,
10,,
1,2,3!5

对于数字组,它直截了当:[1-9][0-9]. 其余的,它是一个谜(仍然)。

问题

有人可以协助提出正确的正则表达式吗?

标签: javaregex

解决方案


^[1-9][0-9]?(?:[,|][1-9][0-9]?)*$

解释:

^            # Start of string
[1-9][0-9]?  # Match a number between 1 and 99
(?:          # Start of optional capturing group:
 [,|]        #  Match one separator
 [1-9][0-9]? #  and a number 1-99
)*           # any number of times (including 0)
$            # End of string

在 regex101.com 上进行实时测试。


推荐阅读