java - 正则表达式匹配连字符和逗号,并且仅在两者之间

标签 java regex

我正在使用正则表达式检查字符串。

规则是:

字符串可以,

包含任何数字、连字符和逗号

连字符和逗号只能位于数字之间。它不应该在字符串的开头或结尾。

逗号是可选的。连字符是强制性的

例如,

有效:

10-20
10-20-3
10-20,3 

无效:

10
-10
,10
10-20,
10-20-
10,20

到目前为止我尝试过的代码:

[0-9,-]+ 

有人可以建议如何检查逗号和连字符不应出现在字符串的开头或结尾以及上述条件吗?

最佳答案

试试这个表达式:

[0-9][0-9,-]*-[0-9,-]*[0-9]

这意味着字符串必须:

  • 以数字开头和结尾
  • 中间至少有一个破折号
  • 在第一个数字之后和破折号之前有零个或多个 [0-9,-] 个字符
  • 破折号和最后一位数字之间有零个或多个 [0-9,-] 个字符

关于java - 正则表达式匹配连字符和逗号,并且仅在两者之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11919374/

相关文章:

通过 Globals API 的 Java 连接导致 StackOverflowError

java - Java Array 类名的格式是什么?

Python正则表达式,匹配最后一个词

正则表达式限制字符串中任何字符的实例数

java - 将 Java 字符串从全部大写(单词之间用下划线分隔)转换为 CamelCase(无单词分隔符)的最简单方法是什么?

java - 在java中仅设置1个复选框被选中

java - 在Java中,如何使用循环实例化新对象,将它们存储在数组中,然后使用它们?

java - 无法解包到请求的类型 Javax.Sql.Datasource - Spring hibernate java 配置

java - 如何使用 lambda 来过滤 Java 中的 boolean 数组

python - 正则表达式匹配大写单词,以及周围的 +- 4 个单词