我在尝试使用此正则表达式时遇到错误:输出应仅匹配数字和点。 1,2,3,1.2,11.11,1.10,。40,。60,0.10
Invalid regular expression: /\d+\.\d?{2}/: Nothing to repeat
var reg = /\d+\.\d?{2}/;
if ($("#g_C").val().match(reg))
{ alert("match"); }
else
{ alert("no match"); }
更新了最终答案: var reg = / ^(。\ d {1,2})$ | ^ \ d +(?:。\ d {1,2})?$ /;
答案 0 :(得分:4)
您正在使用多个量词
var reg = /\d+\.\d?{2}/;
// here ----------^^^^
?
表示“前一个零或一个”,但随后您使用{2}
跟随它,这意味着“前一个事件中的两个”。那时, 没有先前的事情(因为已经应用了?
)。
您要么删除?
,要删除{2}
,或者(如果您想要文字?
),请将\
放在?
前面{1}}。
你还没有说出你想要的东西,但我会猜测你想要整数(没有小数点),或者带小数点的数字和两个精确位置。如果是这样的话:
var reg = /\d+(?:\.\d{2})?/;
这意味着“一系列一个或多个数字,可选后跟一个小数点,正好是两位数。” (?:...)
为\.\d{2}
定义了一个非捕获组,其后面的?
表示整个组都是可选的。