十进制数的重复文本帮助

时间:2015-11-18 07:24:12

标签: regex

我有正则表达式,应检查字符串是否为十进制数...

^([\+\-])?\d{1,10}[\.,]?\d{1,10}?$
  1. 以单个+或 - // 非必需
  2. 开头
  3. 跟随数字
  4. 跟随十进制单个分隔符// 非强制性
  5. 并按照一到十位数// // 非强制性 - 仅在小数点分隔符的情况下才会出现
  6. ,但在

    的情况下不起作用
    -1 //single digit
    

    如果有超过10 digits w/o decimal separator -> should fail

    的话
      assertEquals(false,  Util.isDecimalNumber("12345678901"));
    

    是否有更简单的方法来检查字符串是否为十进制数?

3 个答案:

答案 0 :(得分:1)

您的RegExp的小数部分语法不正确。

而不是

^([\+\-])?\d{1,10}[\.,]?\d{1,10}?$

应该是

^([\+\-])?\d{1,10}([\.,]\d{1,10})?$ 

^([\+\-])?\d{1,10}[\.,]?\d{0,10}$

第一个更合适,因为它不允许小数点而没有像123.这样的小数部分。

用语言来说,它将成为:

  1. 从单个+或 - //开始,不是强制性的。

  2. 跟随数字

  3. 跟随十进制单个分隔符跟随一到十个数字//不是必需的

  4. 检查this Regex101 demo

答案 1 :(得分:0)

尝试以下模式:

^[-+]?\d{1,10}(?:[.,]\d{1,10})?$

答案 2 :(得分:0)

^[\+\-]?\d{1,10}([\.,]\d{1,10})?$

小提琴:https://regex101.com/r/qQ2dE4/80