import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^[A-Z0-9]+(?:-[A-Z0-9]+)?(?:,[A-Z0-9]+(?:-[A-Z0-9]+)?)*$";
final String string = "//Valid Values\n"
+ "D1\n"
+ "DF2,AB2\n"
+ "D1-2\n"
+ "A1, A2\n"
+ "D1 - 2\n"
+ "1 - FH15\n"
+ "1-R3\n"
+ "1,D2\n"
+ "1,H5,8,S4\n"
+ "1 , H5, 8, S4\n"
+ "1, D2, D6-8, 6-9\n"
+ "1,D2,D6-8,6-9,G2,8\n"
+ "1-D3,TT6-8\n"
+ "1-D3, TT6-8\n"
+ "1-3, VB8, 11-SD13, R15\n\n"
+ "//Invalid values\n"
+ "1*, 3\n"
+ ",1,F2\n"
+ "-1-TG3\n"
+ "12-D4,\n"
+ "D1-F2-\n"
+ "1- F2- 4\n"
+ "D10,/\n"
+ "1234s\n"
+ "F4-,8\n"
+ "4,-H5\n"
+ "D3-F-G7\n"
+ "D3 - F - G7\n"
+ "4 , - H5\n"
+ "1*,D\n"
+ "12 - D4";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html