匹配等于或大于 0.5 或 0.5 的正则表达式,增量为 0.5

标签 regex

我正在尝试增强另一篇文章的给定答案:

^[1-9]\d*(?:\.[05])?$

分手:

^        # Start of input
[1-9]    # match digit 1 to 9
\d*      # match 0 or more of any digits
(?:      # start of non-capturing group
\.       # match a decimal
[05]     # followed by digit 0 or 5
)?       # end non-capturing group. (? makes this group optional)
$        # End of input

只有这一次正则表达式需要接受 0,5 或 0.5 以及 0,5 或 0.5 的增量

数字零是唯一无法匹配的。

已经尝试过:

(?!0).{1}|^[1-9]\d*(?:(,|\.)[05])?$

[^0]|^[1-9]\d*(?:(,|\.)[05])?$

你能帮忙吗?

最佳答案

你可以使用

^(?!0$)\d+(?:[,.][05])?$

参见 demo

这将匹配您所需的数字并将排除 0-only 数字,这要归功于开始时的前瞻性。

主要变化:

  • \d+ - 替换了 [1-9]\d* 以允许 0 作为整数部分
  • [,.] - 替换 \. 以允许逗号作为小数点分隔符。
  • 前瞻添加了一个 0 数字异常。

可以增强前瞻以禁止类似0.000的输入:

^(?!0+(?:[,.]0+)?$)\d+(?:[,.][05])?$

参见 another demo .

关于匹配等于或大于 0.5 或 0.5 的正则表达式,增量为 0.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33677828/

相关文章:

regex - 为什么正则表达式不能正常工作

r - 在 R 中使用 AND 和 OR bool 运算符检测字符串

python - 如何在 Python 中为部分正则表达式设置 ignorecase 标志?

regex - 使用 Perl 构建首字母缩略词查找器正则表达式

java - 无法匹配我的正则表达式

java - 正则表达式中的无限循环

javascript - 修改现有的正则表达式以适应用空格替换 <nbsp;>

c++ - 如何编写正则表达式以匹配以下数字格式?

regex - Sublime Text 3语法定义: how to capture a multiline C-style block comment?

javascript - 替换字符串并计算字符串中字母的出现次数