我需要一个正则表达式,以使
例如如果小数点前有5位数字,则最多可以有45位数字 在小数点后出现。
允许输入50位数字,不带小数点。
例如,它应与以下数字匹配:
12345678901234567890123456789012345678901234567890 12345.123456789012345678901234567890123456789012345
如果有人能在这方面提供帮助,那就太好了!
答案 0 :(得分:2)
这就是你想要的吗?
^(?:\d{1,50}|(?=.{3,51}$)\d+\.\d+)$
var test = [
'12345678901234567890123456789012345678901234567890', '12345.123456789012345678901234567890123456789012345',
'123456.7890',
'123456789012345678901234567890123456789012345678901',
'12345678901234567890123456789012345678901234567890.1'
];
console.log(test.map(function (a) {
return a+' :'+/^(?:\d{1,50}|(?=.{3,51}$)\d+\.\d+)$/.test(a);
}));
答案 1 :(得分:2)
您可以使用此正则表达式,如果.2
是有效的,而2.
是有效的,则它将匹配数字从1到50的整数,或者匹配长度为2到51的十进制数。无效。
^(?:\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.]*)$