Javascript 正则表达式-验证十进制数-最大50位,不包括十进制数|十进制可选|十进制数之前或之后允许的任何位数

Javascript 正则表达式-验证十进制数-最大50位,不包括十进制数|十进制可选|十进制数之前或之后允许的任何位数,javascript,jquery,regex,Javascript,Jquery,Regex,我需要一个正则表达式,它将以如下方式验证十进制数 小数点前/后可以有任意位数 整数的最大长度为50(不包括小数点) 例如,如果小数点前有5位数字,则最多可以有45位数字 小数点后出现 小数点是可选的 允许有50位数字,无小数点 例如,它应该与以下数字匹配: 12345678901213456789012345678901234567890123456789012345678901234567890 12345.1234567890121345678901234567890123456789012

我需要一个正则表达式,它将以如下方式验证十进制数

  • 小数点前/后可以有任意位数
  • 整数的最大长度为50(不包括小数点) 例如,如果小数点前有5位数字,则最多可以有45位数字 小数点后出现

  • 小数点是可选的
  • 允许有50位数字,无小数点

    例如,它应该与以下数字匹配:

    12345678901213456789012345678901234567890123456789012345678901234567890 12345.12345678901213456789012345678901234567890123456789012345

    如果有人能在这方面提供帮助,那就太好了

    这就是你想要的吗

    ^(?:\d{1,50}|(?=.{3,51}$)\d+\.\d+)$
    

    var测试=[
    '12345678901234567890123456789012345678901234567890', '12345.123456789012345678901234567890123456789012345',
    '123456.7890',
    '123456789012345678901234567890123456789012345678901',
    '12345678901234567890123456789012345678901234567890.1'
    ];
    console.log(test.map)(函数(a){
    返回a+':'+/^(?:\d{1,50}|(?=.{3,51}$)\d+\.\d+$/.test(a);
    
    }));您可以使用此正则表达式,它将匹配数字在1到50之间的整数,或匹配长度为2到51的十进制数,假设
    .2
    有效,但
    2.
    无效

    ^(?:\d{1,50}|(?=\d*\.\d+$)(?=.{2,51}$)[\d.]*)$
    
    说明:

    • ^
      -->字符串的开头
    • (?:
      -->非组的开始
    • \d{1,50}
      -->匹配长度为1到50的整数
    • |
      -->分隔十进制大小写的交替
    • (?=\d*\.\d+$)
      -->确保格式为零或多个数字,后跟一个文字点,后跟一个或多个数字
    • (?=.{2,51}$)
      -->确保位数在2到51之间
    • [\d.]*
      -->实际捕获了数字
    • -->组结束
    • $
      -->字符串结尾
    这里有一个5-6的正则表达式,而不是50-51的正则表达式,因此您可以轻松地使用它

    ^(?:\d{1,5}|(?=\d*\.\d+$)(?=.{2,6}$)[\d.]*)$
    

    Java不是javascript。那么,我编辑了哪些语言的标签。有什么理由投反对票吗?到目前为止,你尝试了什么?应该很容易找到与指定长度的数字匹配的正则表达式。@Andreas“应该很容易找到与指定长度的数字匹配的正则表达式”-除了验证是三重的。限制总位数并不是唯一的问题。我面临的主要问题是动态检查十进制前后的位数。也就是说,如果在小数点前有10位数字,那么在小数点后40位数字应该是允许的。我想他想要的是最大长度50,而不是最大长度min@DanielE.:你说得对,修好了。