首页 > 解决方案 > 用于验证数字的正则表达式,带或不带冒号或小数点

问题描述

我想写一个正则表达式,它只允许数字和小数点或冒号 (:) 而不是小数点。贝娄是一些例子

有效的:

87887
8787.878
8878:98

无效的

abc
989ab
8987.89:87

我有正则表达式^[0-9.:]+$要验证,但它接受小数点后的冒号,.这意味着如果我写898.:89,它显示有效。

你能帮我找出解决办法吗

标签: regex

解决方案


这会起作用:

^(?:[0-9]+(?:[.:][0-9]+)?|[.:][0-9]+)$
  • ^- 开始字符串锚
  • (?:- 开始非捕获组,以便开始和结束锚点是全局的,而不是成为 or 子句的一部分
  • [0-9]+- 允许数字
  • (?:[.:][0-9]+)?- 可选地允许冒号或句点必须后跟至少一位数字
  • |- 或者
  • [.:][0-9]+- 冒号或句点后跟一个数字
  • )- 关闭捕获组
  • $- 结束字符串锚

https://regex101.com/r/Joe8oi/1


推荐阅读