当前位置: 首页 > 知识库问答 >
问题:

最大长度忽略点的十进制数的正则表达式

墨翔宇
2023-03-14

我在寻找一个正则表达式,它允许数字具有小数点后的最大长度。

它应该允许最大16位数字和3位小数,但是最大16位应该包括小数,但不包括。字符。到目前为止,我已经尝试过了:^(? =^[\d\.]。{0,16}$)[0-9] (\.[ 0-9]{1,3})? $,除了允许17个单个数字之外,它很接近,而它应该只接受16个。如果我将{0,16}更改为{0,15},它会破坏小数。

可接受值:

  • 123
  • 123.3
  • 123.45
  • 123.456
  • 1111111111111.345(共16个数字)
  • 11111111111111.45(共16个数字)

拒绝:

  • 123.1234
  • 11111111111111111 (17字符)
  • 1111111111111111。
  • 111111111111111.56 (15字符和2个数字=17)

提前谢谢。

共有1个答案

郭思淼
2023-03-14

您的正则表达式相当接近,您可以使用此正则表达式:

^(?=(?:\d\.?){0,16}$)\d+(?:\.\d{1,3})?$

正则表达式演示

正则表达式详细信息:

  • (? =(?:\d\.?){0,16}$):是正的前瞻,以断言我们在输入中有0到16位数字,其中点是可选的。
  • \d (?:\.\d{1,3})?:将整数或十进制数与1到3位数字匹配。
 类似资料:
  • 我有一个正则表达式,最多允许6个小数(“.”是小数分隔符) 我还想设置最大长度条件,以便用户只能输入12位数字,最大长度应排除“.”我如何使用正则表达式做到这一点。

  • 我不确定这是否可以使用正则表达式。我会尝试使用正则表达式,但如果不可能,我会切换到双重验证。 我的数据库(postgresql)接受为15,6(最多15位,最多6位小数),因此如果我有10位整数,我可以有5位小数。小数分隔符被忽略。 我目前有一个正则表达式(逗号是小数分隔符): 它不验证总长度,只验证左侧的数字。但由于用户也可以键入点(千位分隔符),我有一个怪物:

  • 我想验证一个数字最大长度为13、小数点为2的货币字符串。我用逗号作为十进制分隔符,用句点作为千位分隔符。 我有一个正则表达式: For sintax有效,但不适用于最大长度。我需要在这个正则表达式中添加什么? 例如,这些字符串必须有效: 这些必须是无效的:

  • 我如何用PHP中的正则表达式来实现这个 匹配此内容并忽略尺寸部分 请记住,300x200可以是任何东西,从4charsx4chars到1charx1chars

  • 我有一个正则表达式无法验证我的输入。 我的正则表达式:

  • 问题内容: 我一直认为,Java的regex-API(以及与此相关的许多其他语言)中的后置断言必须具有明显的长度。因此,STAR和PLUS量词在内部回顾中是不允许的。 优秀的在线资源regular-expressions.info似乎证实了我的一些假设: “ […] Java通过允许有限重复而向前迈进了一步。你仍然不能使用星号或加号,但是可以使用问号和花括号以及指定的max参数。Java认识到有限