【问题标题】:regex For Float Numbers with Limits带有限制的浮点数的正则表达式
【发布时间】:2017-07-25 12:17:09
【问题描述】:

我需要用于浮点数的正则表达式和整数,这些数字具有限制,例如它将接受点之前的 1 位或 2 位数字和点之后的 1 位或 2 位数字。整数限制应为 2 位数。 什么应该是有效的:

 - 1.1
 - 11.1
 - 1.11
 - 11.11
 - 2
 - 22

What should be invalid:

 - 111.111
 - 222
Here is my Regex:
/^\d{1,2}(\.\d){1,2}?$/


But it is not working properly
kindly help me in this

【问题讨论】:

  • 您是否使用 Swift/Objective-C 进行编码?那为什么要使用正则表达式分隔符?
  • 试试^\d{1,2}(\.\d{1,2})?$
  • 1.2. 这样的值是否有效?
  • 反应中的 M 编码
  • 没有像 1. 2. 这样的值无效。点后应该有 1 或 2 位数字。

标签: regex regula


【解决方案1】:

使用以下模式:

^\d{1,2}(?:\.\d{1,2})?$

the regex demo

详情

  • ^ - 字符串开头
  • \d{1,2} - 1 位或 2 位数字
  • (?:\.\d{1,2})? - 可选序列:
    • \. - 一个点
    • \d{1,2} - 1 位或 2 位数字
  • $ - 字符串结束。

【讨论】:

  • 哇,我喜欢那漂亮的图形
  • 非常感谢。它运行良好。你能解释一个可选的序列吗? \d{1,2} 这是数字,\。这是针对点,\d{1,2} 这是针对点后的数字。但是?:这是什么。它是如何在表达式中工作的
  • @Fizzah (?:...)non-capturing group。它仅用于对模式进行分组,而不将捕获的值存储在内存缓冲区中。使它成为可选的是它后面的? 量词。 ? 使非捕获组内的整个模式匹配 1 或 0 次。
  • 知道了。非常感谢
【解决方案2】:

试试这个:

/^\d{1,2}(\.\d{1,2})?$/

使正则表达式的第二部分成为可选

【讨论】:

  • 是的,按照我上面的评论修复后它会起作用,但不需要使用捕获组,非捕获就足够了。现在,我们的解决方案几乎相同。
  • @WiktorStribiżew 你的答案好多了,你是从哪里制作的?
猜你喜欢
  • 2022-11-21
  • 2012-09-20
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
相关资源
最近更新 更多