Java:regexp不包括空值

在这里的问题中,我得到了正则表达式,以匹配1到99之间的一个(或多个)数字组,以|分隔 或者,(两者都可以合并)。

我想更新它以做同样的事情,但现在接受0到99之间的数字。

这个修改版本做到了:

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

但现在接受空值(参见https://regex101.com/r/FfvavR/2 )

如何修改1下的regExp以排除空值?

目前还不清楚00是有效还是无效的条目。 如果允许00 ,则使用此正则表达式:

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

RegEx演示1

如果不允许00那么使用这个位长的正则表达式:

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

RegEx演示2

只需删除第一次出现的?: 。 它使组可选。 所以你有两个接受空字符串的可选组。

你也可以简化[0-9]|[1-9][0-9][1-9]?[0-9]?表示第一个数字是可选的)

结果:

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