首页 > 解决方案 > Java:正则表达式不包括空值

问题描述

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

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

这个修改后的版本这样做:

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

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

问题

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

标签: javaregex

解决方案


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

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

结果:

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

推荐阅读