正则表达式百分比用逗号分隔

时间:2012-01-03 15:01:13

标签: java regex numbers validation

我要用这个规则创建一个正则表达式:

  1. 数字介于5-100
  2. 之间
  3. 数字以逗号(55,70,90)
  4. 分隔
  5. 数字在字符串中是唯一的
  6. 例如:

    • 10,20,50 OK
    • 10,20,50 NO(空格)
    • 10,20,50,NO(最后一个逗号)
    • 10,10,20 NO(独特)
    你能帮帮我吗?

3 个答案:

答案 0 :(得分:2)

这不是正则表达式的工作,因为你有

  1. 列表中可变数量的项目
  2. 对数字(> 5,< 100)的限制,这些数字通常难以在正则表达式中表示。
  3. 您只需使用String#split()

    即可
    String arr[] = s.split(",");
    for (int i=0; i<s.length; i++) {
      // apply your rules here
    }
    

答案 1 :(得分:1)

尽管可以使用正则表达式执行所有检查,但我认为它不适合这项工作。

我会:

  • 使用正则表达式验证字符串只是数字和逗号:^(?:[0-9]+,)*[0-9]+$
  • 使用split(',', $input)转换为数组
  • 循环数组并确保数字介于5 - 100(算术比较)和无重复(数组比较)之间。

答案 2 :(得分:0)

问题1的解决方案

(?:[5-9]|[1-9][0-9]|100)(?![0-9])

5到9之间,10到99之间或100之间的数字,后面没有数字。