我正在尝试制作一个HTML模式/正则表达式,以仅允许0到1之间的浮点数,最多两个小数点。
因此,以下内容将是正确的:
0
0.1
0.9
0.11
0.99
1
这些将是不正确的:
00
0.111
0.999
1.1
2
10
我对正则表达式一无所知,我不了解它的语法,也没有找到一个在线工具来生成正则表达式。
我从在线示例中收集了一些东西:
^(0[0-1]|\d)(\.\d{1,2})?$
我添加了0[0-1]
来设置0-1范围,但是它不起作用。此正则表达式匹配0到9之间的每个数字,这些数字也最多可以包含2个小数。
答案 0 :(得分:1)
尝试使用alternation,其中0部分后面可以有一个可选的点和2个数字,而1部分后面可以有一个可选的点和1或2乘以零。
^(?:0(?:\.\d{1,2})?|1(?:\.0{1,2})?)$
^
字符串的开头(?:
非捕获组
0(?:\.\d{1,2})?
匹配0,并可选地匹配点和1-2位数字|
或1(?:\.0{1,2})?
匹配1,还可以匹配一个点和1-2个零点)
关闭群组$
字符串结尾答案 1 :(得分:1)
如果您对RegEx不满意,可以使用一些代码来检查输入是否符合您的需求,例如:
function ValidateNumber(num)
{
const floatNumber = Number(num);
return floatNumber != NaN && 0 <= floatNumber && floatNumber <= 1 && ('' + num).length <= 4;
}
const TestArray = [ '42', 42, 0, '0', '1', '1.00', '1.01', '0.01', '0.99', '0.111', 'zero' ]
TestArray.forEach(function(element) {
console.log(element + ' is ' + (ValidateNumber(element) ? '' : 'not ') + 'a valid number');
});