正则表达式,用于在0-1范围内的两位小数的浮点数

时间:2019-10-30 10:26:30

标签: regex

我正在尝试制作一个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个小数。

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个零点
  • )关闭群组
  • $字符串结尾

Regex demo

答案 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');
});