首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮动(x,y)可能吗?

浮动(x,y)可能吗?
EN

Stack Overflow用户
提问于 2020-02-01 18:25:38
回答 1查看 129关注 0票数 3

在下面的示例中,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验证实现所需的效果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-01 20:27:22

您可以首先使用前瞻检查总长度,然后在小数点之后检查数字的长度。

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

代码语言:javascript
复制
^(?=.{X+1}$)([1-9]\d*|0)\.\d{1,Y}$

解释:

代码语言:javascript
复制
^         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 = 5Y = 2,您将拥有:

代码语言:javascript
复制
^(?=.{8}$)([1-9]\d*|0)\.\d{1,2}$

Regex101演示

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60019878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档