gpt4 book ai didi

javascript - 匹配数字、有限范围和无限范围(例如>=9)的正则表达式

转载 作者:行者123 更新时间:2023-11-30 13:42:06 24 4
gpt4 key购买 nike

什么可以是以下类型字符串的正则表达式

例如1、2-3、4..5、<6、<=7、>8、>=9在这里,我对小于 100 的数字使用等于、范围 (-)、序列 (..) 和大于/等于运算符。这些数字用逗号分隔。

请帮我写一个正则表达式。提前致谢。

  • 阿图尔

最佳答案

这样的事情怎么样:

^(\d+(-|\.\.)|[<>]=?)?\d+$

使用 Python 的示例:

>>> import re
>>> pattern = '^(\d+(-|\.\.)|[<>]=?)?\d+$'
>>> for s in '1, 2-3, 4..5, <6, <=7, >8, >=9'.split(','):
... print(re.match(pattern, s.strip()).group(0))
...
1
2-3
4..5
<6
<=7
>8
>=9

明确地说,这个正则表达式只匹配列表中的 一个 元素。我强烈建议预处理您的输入,方法是用逗号拆分输入并 trim 各个元素,就像我在上面的示例中所做的那样。尽管这不是绝对必要的(您可以将此逻辑添加到我在此处提供的正则表达式中),但它会更加高效和可读。

正则表达式的工作原理:

  • 观察每个有效字符串都以一位或多位数字结尾,因此 \d+$ .
  • 在那之前可能有也可能没有,因此,^(...)?\d+$ .
  • 这些前缀要么是范围的开始,要么是比较:
    • \d+(-|\.\.)匹配后跟破折号或两个句点的数字。
    • <=?火柴"<"以及"<=" .同样对于 >=? .我们可以将其缩写为 [<>]=? .
  • 使用表示选择的管道 ( |) 组合这两个选项,我们得到

    ^(\d+(-|\.\.)|[<>]=?)?\d+$

关于javascript - 匹配数字、有限范围和无限范围(例如>=9)的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1733807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com