【问题标题】:Regex matching hyphen and comma and only in between正则表达式匹配连字符和逗号,并且仅在两者之间
【发布时间】:2012-08-08 19:13:35
【问题描述】:

我正在使用正则表达式检查字符串。

规则是:

字符串可以,

包含任何数字、连字符和逗号

连字符和逗号只能在数字之间。它不应该在字符串的开头或结尾。

逗号是可选的。连字符是强制性的

例如,

有效:

10-20
10-20-3
10-20,3 

无效:

10
-10
,10
10-20,
10-20-
10,20

到目前为止我尝试过的代码:

[0-9,-]+ 

有人可以建议如何检查逗号和连字符不应该在字符串的开头或结尾以及上述条件吗?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    表达式的开头应包含^ 或\A,结尾应包含$ 或\z,否则表达式也会匹配无效字符串,例如:

    ,10
    20-
    -34
    

    所以表达式应该是:

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

    【讨论】:

      【解决方案2】:

      试试这个表达式:

      [0-9][0-9,-]*-[0-9,-]*[0-9]
      

      这意味着字符串必须:

      • 以数字开头和结尾
      • 中间至少包含一个破折号
      • 在第一个数字之后和破折号之前有零个或多个 [0-9,-] 字符
      • 在破折号和最后一位数字之间有零个或多个 [0-9,-] 字符

      【讨论】:

        【解决方案3】:

        你应该试试这个

        [0-9][0-9,\-]*-[0-9,\-]*[0-9]
        

        我认为连字符需要在字符类中反斜杠

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-02
          • 1970-01-01
          • 2011-07-16
          • 2021-07-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多