我有一个字符串ex = 1,2,3,4,5-7,8,9,10-15,34,898
在上面的字符串中,我的正则表达式必须验证以下内容
因此我尝试使用单个正则表达式,这使我的代码笨拙,少数情况下失败
//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+$");
答案 0 :(得分:1)
这是应该正常工作的常规正则表达式模式:
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$
数量\d+(?:-\d+)?
表示要匹配一个或多个数字,并可选地跟一个连字符,然后是一个或多个其他数字。然后,将其附加到模式末尾:
(?:,\d+(?:-\d+)?)*
这匹配一个逗号,后面跟着另一个数字/数字组,零次或多次。
请注意,如果您使用的是Java代码,则在Java代码中可能不需要^
和$
锚点。 String#matches
,它会自动添加这些锚点。