@Pattern 正则表达式仅允许:数字和空字符串以及以 0 开头的数字

@Pattern regex allowing only : numbers & empty String & numbers beginning by 0

我在我的实体中的字符串字段上使用 @Pattern 注释,正则表达式只允许数字或空字符串,但我也需要允许数字以 0 开头。

这是我现在使用的模式:

//..
@Pattern(message="Entrez un nombre" , regexp = "[+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|(^$)")
private String BSCId;
//...

谢谢。

试试这个:

^(?:[+-]?(\d+)([,.]\d+)?)?$

这允许数字以 0 开头,并且还允许通过将整个字符串设为可选来使字符串为空。

  • [+-]?(\d+) 匹配可选的 +- 然后匹配 1 到无穷大数字
  • ([,.]\d+)? 匹配 ,. 然后一到无穷大数字。使整个分数可选,以便也可以匹配整数。
  • (?:...)? 将所有内容设为可选(以便空字符串根据要求进行匹配),而不创建捕获组。