Visa card validator regular expression

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})?$"));