Javascript 在正则表达式中允许浮点数介于0和2之间吗?
我需要通过正则表达式验证文本输入。文本输入仅接受介于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
^\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请参阅修订后的答案。