场景:我想检查字符串是否只包含数字和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
任何人都可以帮我创建上述场景的正则表达式吗?
答案 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");
}