Java:正则表达式排除空值

时间:2018-07-16 10:40:14

标签: java regex

在问题here中,我得到了正则表达式来匹配1到99之间的一组(或更多)数字,并用|隔开。或,(可以组合使用)。

我想对其进行更新以执行相同的操作,但是现在接受0到99之间的数字。

此修改版本可以做到:

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

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

问题

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

2 个答案:

答案 0 :(得分:1)

只需删除第一次出现的?:。它使组可选。因此,您有两个可选的组,它们接受空字符串。

您还可以将[0-9]|[1-9][0-9]简化为[1-9]?[0-9]?表示第一位数字是可选的)

结果:

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

答案 1 :(得分:1)

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

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

RegEx Demo 1

如果不允许使用00,请使用有点长的正则表达式:

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

RegEx Demo 2