我应该使用什么正则表达式检查一个字符串只有Java中的数字和2个特殊字符( - 和,)?

时间:2017-04-10 10:59:15

标签: java regex

场景:我想检查字符串是否只包含数字和2个预定义的特殊字符,短划线和逗号。

我的字符串包含数字(0到9)和2个特殊字符:短划线(-)定义范围,逗号(,)定义序列。

尝试尝试: 尝试使用正则表达式[0-9+-,]+,但未按预期工作。

可能的输入:

1-5
1,5
1-5,6
1,3,5-10
1-5,6-10
1,3,5-7,8,10

正则表达式不应接受这些类型的字符串:

-----
1--4
,1,5
5,6,
5,4,-
5,6-
-5,6

任何人都可以帮我创建上述场景的正则表达式吗?

2 个答案:

答案 0 :(得分:1)

您可以使用

^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$

请参阅regex demo

正则表达式详情

  • ^ - 字符串开头
  • \d+ - 一位或多位
  • (?:-\d+)? - -和1+位数的可选序列
  • (?:,\d+(?:-\d+)?)* - 零个或多个seuqences:
    • , - 逗号
    • \d+(?:-\d+)? - 与上述相同的模式
  • $ - 字符串结束。

答案 1 :(得分:0)

将正则表达式[0-9 + - ,] +更改为[0-9, - ] +

final String patternStr = "[0-9,-]+";
final Pattern p = Pattern.compile(patternStr);
String data = "1,3,5-7,8,10";
final Matcher m = p.matcher(data);
if (m.matches()) {
System.out.println("SUCCESS");
}else{
System.out.println("ERROR");
}