场景:我想检查字符串是否只包含数字和2个预定义的特殊字符、一个破折号和一个逗号。
我的字符串包含数字(0到9)和2个特殊字符:一个破折号(-)定义一个范围,一个逗号(,)定义一个序列。
尝试尝试:尝试遵循regex [0-9+-,]+,但不像预期的那样工作。
可能的输入:
1-5
1,5
1-5,6
1,3,5-10
1-5,6-10
1,3,5-7,8,10regex不应该接受这些类型的字符串:
-----
1--4
,1,5
5,6,
5,4,-
5,6-
-5,6请有人帮我为上面的场景创建regex吗?
发布于 2017-04-10 11:10:21
你可以用
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$Regex详细信息
^ -字符串的开始\d+ -1或更多位数(?:-\d+)? - -和1+数字的可选序列(?:,\d+(?:-\d+)?)* -零或多个seuqences:, -逗号\d+(?:-\d+)? --与上面描述的相同模式
$ -字符串的末端。发布于 2017-04-10 11:23:35
将regex 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");
}https://stackoverflow.com/questions/43321407
复制相似问题