Regex 浮动(x,y)的正则表达式是否可能?

Regex 浮动(x,y)的正则表达式是否可能?,regex,html-validation,Regex,Html Validation,在下文中,float(x,y)表示总位数为x的数字,其中y可以是小数 我正在尝试对html输入字段进行客户端验证。该字段对应于数据类型为float(x,y)的MySQL列。我知道我可以用大量的“OR”为float(5,2)定义一个模式。有没有一种有效的方法来生成一个正则表达式,这样我就可以在我的web文档中对它进行编码 解决方法之一是指定“\d+(.\d{1,y})”,然后设置“maxlength=x+1”。它是“x+1”,因为小数位数已计算在内。这将允许提交长度为“x+1”的整数,与规范相反。

在下文中,float(x,y)表示总位数为x的数字,其中y可以是小数

我正在尝试对html输入字段进行客户端验证。该字段对应于数据类型为float(x,y)的MySQL列。我知道我可以用大量的“OR”为float(5,2)定义一个模式。有没有一种有效的方法来生成一个正则表达式,这样我就可以在我的web文档中对它进行编码


解决方法之一是指定“\d+(.\d{1,y})”,然后设置“maxlength=x+1”。它是“x+1”,因为小数位数已计算在内。这将允许提交长度为“x+1”的整数,与规范相反。我知道我可以做Javascript验证,但我想用HTML验证。

你可以先用a检查总长度,然后检查小数点后的数字长度

如果要X总位数,最多Y小数点,可以使用:

^(?=.{X+1}$)([1-9]\d*|0)\.\d{1,Y}$
说明:

^         asserts you are in the start position of the line
(?=       lookahead (zero length) match for:
    .{X + 1}     X+1 characters
    $            end of line //now you have asserted the total length
the whole part either
    0            is a single zero
    [1-9]\d*     more than a single digit and does not start with zero     
\.        a dot for the decimal point
\d{1,Y}   at least 1 and at most Y digits
$         asserts end of line
请注意,您不需要检查整个零件的长度,因为您已经检查了总长度和小数点后的数字长度,因此小数点前的零件将自动更正

例如:

对于
X=5
Y=2
,您将有:

^(?=.{8}$)([1-9]\d*|0)\.\d{1,2}$

您面临的问题是什么?你不能只使用
\d{5}\.\d{2}
?事实上,你忘了提到这个正则表达式应该检查什么,除了表达式@Pavelint gived…@Pavelint他们说总共5个数字,最多2个可以是小数。大概是123.45、1234.5和12345。应该全部匹配(可能是12345),但不是12345.6或12.345。您可以通过前瞻性的方式进行长度检查:
^(?=.{8}$)[1-9][0-9]*\(\d{1,2})$
“我意识到我可以进行Javascript验证,但我想使用HTML验证”您能详细说明吗?为什么要避免使用javascript?我的直接反应是“你可以用javascript来做这件事”