jquery正则表达式不起作用

时间:2015-03-23 08:24:08

标签: javascript jquery regex

我在尝试使用此正则表达式时遇到错误:输出应仅匹配数字和点。 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})?$ /;

1 个答案:

答案 0 :(得分:4)

您正在使用多个量词

var reg = /\d+\.\d?{2}/;
// here ----------^^^^

?表示“前一个零或一个”,但随后您使用{2}跟随它,这意味着“前一个事件中的两个”。那时, 没有先前的事情(因为已经应用了?)。

您要么删除?,要删除{2},或者(如果您想要文字?),请将\放在?前面{1}}。

你还没有说出你想要的东西,但我会猜测你想要整数(没有小数点),或者带小数点的数字和两个精确位置。如果是这样的话:

var reg = /\d+(?:\.\d{2})?/;

这意味着“一系列一个或多个数字,可选后跟一个小数点,正好是两位数。” (?:...)\.\d{2}定义了一个非捕获组,其后面的?表示整个组都是可选的。