import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(((\\d{0,16})\\.\\d{1,16})|([0-9]{1})|([1-9]{1}\\d{0,15})|[1-9]{1,3}(,\\d{3}){1,}|(([1-9]{0,3},(\\d{1,3}))*(\\.\\d{1,16}))|([1-9]{1,3},\\d{3}))$";
final String string = "---------------------------------------------\n"
+ "SHOULD PASS\n"
+ "---------------------------------------------\n"
+ "- REGULAR INTEGER---------\n"
+ "1\n"
+ "0\n"
+ "- REGULAR INTEGER MAX 16---------\n"
+ "1234567890123456\n\n"
+ "- DECIMAL LEADING DOT---------\n"
+ ".22222\n\n"
+ "- DECIMAL WITH LEADING NUMBER---------\n"
+ "1.22222\n\n"
+ "- 1k SEPARATOR ---------\n"
+ "1,220\n\n"
+ "- 1k SEPARATOR AND DECIMAL ---------\n"
+ "1,111.0\n"
+ "1,111,111.0\n"
+ "1,111,000,000,000.0\n"
+ "1,000,000,000.1234567890123456\n\n"
+ "- 1k SEPARATOR MAX 16 excluding DECIMAL---------\n"
+ "1,111,000,111,000,111\n\n"
+ "- DECIMAL MAX 16 ---------\n"
+ "0.1234567890123456\n\n"
+ "- NUMBER MAX 16 and DECIMAL MAX 16 ---------\n"
+ "1234567890123456.1234567890123456\n\n\n\n"
+ "---------------------------------------------\n"
+ "SHOULD NOT PASS\n"
+ "---------------------------------------------\n"
+ "- INT STARTING WITH ZERO\n"
+ "00\n"
+ "0123\n\n"
+ "- INT LEADING ZERO WITH COMMAS---------\n"
+ "0,222\n\n"
+ "- INT STARTS WITH COMMA ---------\n"
+ ",111\n\n"
+ "- INT ENDING WITH COMMAS---------\n"
+ "0,222,\n\n"
+ "- TOO BIG INT 17 numerals ---------\n"
+ "12345678901234567.123456\n\n"
+ "- TOO BIG DECIMAL 17 numerals ---------\n"
+ "123456.12345678901234567\n\n"
+ "- DECIMAL AND COMMA REVERSED\n"
+ "1.220,220\n\n"
+ "- INT ENDS WITH DECIMAL ---------\n"
+ "1,111.\n"
+ "1111.\n\n"
+ "- MULTIPLE DECIMAL ---------\n"
+ "1.22.22.22.22.\n\n"
+ "- HAS TEXT ---------\n"
+ "xyc1235xya\n"
+ "xyc 1235 xya\n"
+ "123 xyc 1234\n"
+ "123xyc1234\n"
+ ".asd1223.123,234";
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