【问题标题】:Regex matching hyphen and comma正则表达式匹配连字符和逗号
【发布时间】:2012-07-16 01:52:19
【问题描述】:

我正在尝试使用正则表达式匹配数字:

  1. 之间可以包含连字符
  2. 可以同时包含连字符和逗号

试过了:

[0-9-]+    
[0-9]+[-]?:[-N]?[0-9]

有效输入示例:

60-55-1
79-0,2,4,6,8,10,12,14,16,18,20,22,24,26

【问题讨论】:

    标签: regex


    【解决方案1】:

    你的意思是,例如,[0-9,-]+

    【讨论】:

    • 好的,但[] 的重点在于它可以是任何字符。
    • 但它不强制使用连字符。太糟糕了,OP没有在问题中提到这一点。 (FirmView:please edit your question 包括任何标准。Kolink 的答案是您问题的正确答案。)
    【解决方案2】:

    基于 Kolink 的回答(就问题而言这是正确的),并假设 ,2379- 无效:

    ^[0-9][0-9,-]*-[0-9,-]*[0-9]$
    

    这要求字符串以数字开头,包含任意数量的有效字符,后跟连字符,然后是任意其他数量的有效字符,以数字结尾。请注意,这是简单的 BRE(不是 ERE 或 PREG),因此它适用于每个正则表达式解析器。

    如果我提到的样本确实有效,请说出来。

    【讨论】:

    • 这允许像12-,34 这样的东西。可以吗?
    【解决方案3】:

    这将匹配您正在寻找的内容

    [0-9]+(?:[-,]?[0-9]+)*
    

    它将获得任何数字模式,后跟一个可选字符串,带有破折号和逗号,后跟更多数字。

    【讨论】:

      【解决方案4】:
      (-)?[0-9]+((,|-)[0-9]+)*
      

      我认为这可以满足您的需求。

      【讨论】:

        猜你喜欢
        • 2011-07-16
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2012-08-08
        • 2016-11-03
        • 2011-05-13
        • 2014-02-05
        相关资源
        最近更新 更多