【问题标题】:Regular expression to match a number with 2 digits at most and optionally 2 decimals at most正则表达式匹配最多 2 位数字和可选的最多 2 位小数的数字
【发布时间】:2017-01-05 19:14:57
【问题描述】:

过去几天我一直在搜索,但我找到的唯一正则表达式是这样的:

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

这适用于以下输入:

9
99
9.9
9.99
99.9
99.99
.9
.99

一切正常,但它也恰好接受像

这样的输入
999
9999

我不希望这种情况发生。我该怎么做才能解决这个问题?

【问题讨论】:

  • 那是因为您可选地接受句点字符
  • 你不应该“搜索正则表达式”,而是根据你的要求构造它
  • 然后,您制作电子邮件正则表达式,@Lashane:P

标签: javascript php regex


【解决方案1】:

您可以交替使用此正则表达式:

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

RegEx Demo

正则表达式说明:

^           # start
(?:         # start non-capturing group
   \d{1,2}  # match 1 or 2 digits
   |        # OR
   \d{0,2}  # match 0 to 2 digits
   \.       # followed by DOT
   \d{1,2}  # match 1 or 2 digits
)           # end non-capturing group
$           # end

【讨论】:

  • 嘿,我本来打算消极地向后看,但这也很好。 +1
  • @Farkie:Javascript 中没有后视功能
  • 他从来没有真正说过他在用什么(也提到了 PHP,它可以工作:))
【解决方案2】:

使用以下正则表达式

(\d{0,2})\.\.?\d{0,2}$

【讨论】:

  • 不匹配 9 或 99
  • 是的,我已经找到了,抱歉。将尝试找到正确的正则表达式。
猜你喜欢
  • 1970-01-01
  • 2015-08-28
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
相关资源
最近更新 更多