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

时间:2016-07-31 17:49:45

标签: java regex spring bean-validation

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

这是我现在使用的模式:

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

谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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

  • [+-]?(\d+)匹配可选+-,然后将1与无穷大数字相匹配
  • ([,.]\d+)?匹配,.,然后匹配一个无穷大数字。使整个部分可选,因此整数也可以匹配。
  • (?:...)?使所有内容都可选(因此空字符串会根据要求匹配),而不会创建捕获组。