我遵循正则表达式:^-?([0-9]{0,3}$|[0-9]{0,2}\.?[0-9]{0,1}$)
它不应该允许4位数字,例如4444.如果我尝试here,表达式工作正常,但在javascript中,代码没有按预期工作。它允许4位数字。所有其他验证都可以正常工作。
这是我的代码:
reg0str = "^-?([0-9]{0,3}$|[0-9]{0,2}\.?[0-9]{0,1}$)";
var reg0 = new RegExp(reg0Str);
if (reg0.test(temp)) return true;
更新功能:
我想只允许3位数。所以我要么只允许十进制后的1位数和小数点前的2位数,要么在十进制之前允许最多3位数,在十进制之后不允许任何内容。
所以我的第一部分:
[0-9]{0,3}$
我认为这应该允许最多3位数而且只允许数字。
下一部分:[0-9]{0,2}\.?[0-9]{0,1}$
应允许小数点前最多2位数,小数点后最多1位数。
答案 0 :(得分:1)
试试这个:
var reg0str = "^\-?[0-9]{0,2}[\.]?[0-9]?$";
我不知道为什么,但如果没有封装在一个类中,那么这段时间似乎被视为通配符。
这是更新后的jsfiddle
答案 1 :(得分:1)
遵循OP的澄清
正则表达式是
/^-?(\d{0,3}\.?|\d{0,2)\.\d)$/
^ start of string
-? optional minus sign (use [-+]? if you accept a plus sign)
( start of OR group
\d{0,3} 0 1, 2 or 3 digits
\.? optional decimal point
| OR
\d{0,2} 0 1, or 2 digits
\. decimal point
\d final decimal
) end of OR grouping
$ end of string
答案 2 :(得分:1)
"…\.…"
是一个字符串文字 - 反斜杠将点转换为点,正则表达式点匹配一个数字。您需要转义反斜杠以在RegExp
构造函数中传递带反斜杠的字符串:
new RegExp("^-?([0-9]{0,3}$|[0-9]{0,2}\\.?[0-9]{0,1}$)")
或者你使用正则表达式文字(简化,但仍然匹配相同):
/^-?\d{0,2}\.?\d?$/