在下面的示例中,float(x,y)指的是一个x总数字和y小数的数字。
我正在尝试对HTML输入字段进行客户端验证。该字段对应于数据类型为MySQL的float(x,y)列。我知道我可以用大量的“OR”来定义一个像float(5,2)这样的模式。是否有一种有效的方法来生成一个Regex,这样我就可以在我的web文档中编码它了吗?
解决办法之一是指定\d+(\.\d{1,y})?,然后设置maxlength=x+1。应该是x+1,因为小数位是计数的。这将允许提交长度为x+1的整数,这与规范相反。我意识到我可以做JavaScript验证,但我想通过HTML验证实现所需的效果。
发布于 2020-02-01 20:27:22
您可以首先使用前瞻检查总长度,然后在小数点之后检查数字的长度。
如果您想要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}$https://stackoverflow.com/questions/60019878
复制相似问题