我在我的实体的字符串字段上使用@Pattern注释,正则表达式只允许数字或空字符串,但我也需要允许数字从0开始。
这是我现在使用的模式:
//..
@Pattern(message="Entrez un nombre" , regexp = "[+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|(^$)")
private String BSCId;
//...
谢谢。
答案 0 :(得分:2)
试试这个:
^(?:[+-]?(\d+)([,.]\d+)?)?$
这允许数字以0开头,并且通过使整个字符串可选而允许字符串为空。
[+-]?(\d+)
匹配可选+
或-
,然后将1与无穷大数字相匹配([,.]\d+)?
匹配,
或.
,然后匹配一个无穷大数字。使整个部分可选,因此整数也可以匹配。(?:...)?
使所有内容都可选(因此空字符串会根据要求匹配),而不会创建捕获组。