Java正则表达式可用于正数值,并且很少可用于特殊模式的特殊符号验证

时间:2019-05-27 05:28:40

标签: java regex

我有一个字符串ex = 1,2,3,4,5-7,8,9,10-15,34,898

在上面的字符串中,我的正则表达式必须验证以下内容

  1. ex字符串应仅包含数字值(0-9)和两个特殊字符 ,-一个人。
  2. 正则表达式应验证ex不应以空格,cama(,)和 hyfun(-),不应结束。
  3. cama(,)之后应仅包含数字值。
  4. 字符串ex应该仅支持0-9的正数。
  5. 在hyfun(-)之后,应该单独有一个正数值。
  6. 它不应在字符串的任何位置允许空格。
  7. hyfun(-)符号是上述ex字符串中的范围指示符,因此应 带有正数值的前缀和后缀。
  8. cama(,)是字符串中每个元素的分隔符,因此它应该以正数值开头。

因此我尝试使用单个正则表达式,这使我的代码笨拙,少数情况下失败

 //Regex Pattern for validating number alone as its starting and ending of the string
        Pattern digits = Pattern.compile ("^[0-9](.*[0-9])?$");
 //Regex Pattern for validating special character along with the digits alone
        Pattern special = Pattern.compile("^[0-9,-]*$");
//Regex Pattern for validating only positive numeric values alone
        Pattern positiveNumeric = Pattern.compile("^\\d+$");

1 个答案:

答案 0 :(得分:1)

这是应该正常工作的常规正则表达式模式:

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

Demo

数量\d+(?:-\d+)?表示要匹配一个或多个数字,并可选地跟一个连字符,然后是一个或多个其他数字。然后,将其附加到模式末尾:

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

这匹配一个逗号,后面跟着另一个数字/数字组,零次或多次。

请注意,如果您使用的是Java代码,则在Java代码中可能不需要^$锚点。 String#matches,它会自动添加这些锚点。