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