Javascript 在正则表达式中允许浮点数介于0和2之间吗?

Javascript 在正则表达式中允许浮点数介于0和2之间吗?,javascript,regex,validation,numbers,Javascript,Regex,Validation,Numbers,我需要通过正则表达式验证文本输入。文本输入仅接受介于0和2之间的浮点数,否则会导致验证错误。目前我正在使用这个表达式 ^\d+\.\d{0,2}$ 但它只对数字(1.0、2.0…)进行验证。以下是文本的有效/无效输入 有效: 0 一, 二, 0.1 1.9 2.0 0.01 1.09 1.009 无效: -一, 三, 2.1 2.01 2.001 使用此正则表达式: var regex=/^([01](\[0-9]+)?| 2(\.0+)$/; var测试=[ "0", "1", "2

我需要通过正则表达式验证文本输入。文本输入仅接受介于0和2之间的浮点数,否则会导致验证错误。目前我正在使用这个表达式

^\d+\.\d{0,2}$
但它只对数字(1.0、2.0…)进行验证。以下是文本的有效/无效输入

有效:

  • 0
  • 一,
  • 二,
  • 0.1
  • 1.9
  • 2.0
  • 0.01
  • 1.09
  • 1.009
无效:

  • -一,
  • 三,
  • 2.1
  • 2.01
  • 2.001
使用此正则表达式:

var regex=/^([01](\[0-9]+)?| 2(\.0+)$/;
var测试=[
"0", "1", "2", "0.1", "1.9", "2.0", "0.01", "1.09", "1.009",
"-1", "3", "2.1", "2.01", "2.001", "1.", "2."
];
测试。forEach(函数(str){
console.log(str++(regex.test(str)?“通过”:“失败”);
});
document.querySelector(“#input1”).addEventListener(“keyup”,function()){
this.style.backgroundColor=regex.test(this.value)?“#6F6”:“#F66”;
});

您的模式
^\d+。\d{0,2}$
在开始时使用
\d+
接受0-9之间的1+数字,因此您应该使用字符类将其限制为0或1

如果您不想匹配后跟一个点的数字,可以将此部分
\d{0,2}
转换为
\d+
,因此
1.
0.
等值无效

您可以使用一种替代方法:

^(?:[01](?:\.\d+)?|2(?:\.0+)?)$

let模式=/^(?[01](?:\.\d+)| 2(?:\.0+)$/;
["0", "1", "2", "0.1", "1.9", "2.0", "0.01", "1.09", "1.009",
"0.", "1.", "-1", "3", "2.1", "2.01", "2.001"

].forEach(s=>console.log(s+(pattern.test)?“=ok”:“=notok”)parseFloat()
解析它,然后使用
=
。看起来像:
let num=parseFloat(str);让check=isNaN(num)&&num>=0&&numTry
^(?[01](?:\.\d+)| 2(?:\.0+)$
是否可以编写一个正则表达式来匹配pi?只需将
*
替换为
+
(尽管
2.
应该是有效的)。@junaid请参阅修订后的答案。