首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中,应该使用什么regex来检查只有数字和两个特殊字符(和,)的字符串?

在Java中,应该使用什么regex来检查只有数字和两个特殊字符(和,)的字符串?
EN

Stack Overflow用户
提问于 2017-04-10 10:59:14
回答 2查看 73关注 0票数 0

场景:我想检查字符串是否只包含数字和2个预定义的特殊字符、一个破折号和一个逗号。

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

尝试尝试:尝试遵循regex [0-9+-,]+,但不像预期的那样工作。

可能的输入:

代码语言:javascript
复制
1-5
1,5
1-5,6
1,3,5-10
1-5,6-10
1,3,5-7,8,10

regex不应该接受这些类型的字符串:

代码语言:javascript
复制
-----
1--4
,1,5
5,6,
5,4,-
5,6-
-5,6

请有人帮我为上面的场景创建regex吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-10 11:10:21

你可以用

代码语言:javascript
复制
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$

regex演示

Regex详细信息

  • ^ -字符串的开始
  • \d+ -1或更多位数
  • (?:-\d+)? - -和1+数字的可选序列
  • (?:,\d+(?:-\d+)?)* -零或多个seuqences:
    • , -逗号
    • \d+(?:-\d+)? --与上面描述的相同模式

  • $ -字符串的末端。
票数 1
EN

Stack Overflow用户

发布于 2017-04-10 11:23:35

将regex 0-9+-,+改为0-9,-+

代码语言:javascript
复制
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");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43321407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档