我有正则表达式,应检查字符串是否为十进制数...
^([\+\-])?\d{1,10}[\.,]?\d{1,10}?$
,但在
的情况下不起作用-1 //single digit
如果有超过10 digits w/o decimal separator -> should fail
assertEquals(false, Util.isDecimalNumber("12345678901"));
是否有更简单的方法来检查字符串是否为十进制数?
答案 0 :(得分:1)
您的RegExp的小数部分语法不正确。
而不是
^([\+\-])?\d{1,10}[\.,]?\d{1,10}?$
应该是
^([\+\-])?\d{1,10}([\.,]\d{1,10})?$
或
^([\+\-])?\d{1,10}[\.,]?\d{0,10}$
第一个更合适,因为它不允许小数点而没有像123.
这样的小数部分。
用语言来说,它将成为:
从单个+或 - //开始,不是强制性的。
跟随数字
跟随十进制单个分隔符和跟随一到十个数字//不是必需的
答案 1 :(得分:0)
尝试以下模式:
^[-+]?\d{1,10}(?:[.,]\d{1,10})?$
答案 2 :(得分:0)
^[\+\-]?\d{1,10}([\.,]\d{1,10})?$