Visa card validation must start with a 4 then 12 digits between 0-9.this one is for a 13 digit visa card
Then 3 optional digits between 0-9. optional hence the ? in the end ([0-9]{3})? That is for 16 digit card numbers*/
Code example is below
//^4[0-9]{12}([0-9]{3})?$
String visaCard1 = "4444444444444";
String visaCard2 = "444444444444444";
String visaCard3 = "4444444444444444";
String visaCard4 = "4444";
System.out.println("visa1 "+ visaCard1.matches("^4[0-9]{12}([0-9]{3})?$"));
System.out.println("visa2 "+ visaCard2.matches("^4[0-9]{12}([0-9]{3})?$"));
System.out.println("visa3 "+ visaCard3.matches("^4[0-9]{12}([0-9]{3})?$"));
System.out.println("visa4 "+ visaCard4.matches("^4[0-9]{12}([0-9]{3})?$"));