Regular Expression (REGEX) is the best method to validate phone number. emailId, name in Java.
Here I have written this validation code for phone number using Regular Expression and Java code to use this in an Oracle ADF Application.
public void phoneNoValidator(FacesContext facesContext, UIComponent uIComponent, Object object) { String msg2 = ""; if (object != null) { String phnNo = object.toString(); int openB = 0; int closeB = 0; boolean closeFg = false; char[] xx = phnNo.toCharArray(); for (char c : xx) { if (c == '(') { openB = openB + 1; } else if (c == ')') { closeB = closeB + 1; } if (closeB > openB) { closeFg = true; //closed brackets will not be more than open brackets at any given time. } } //if openB=0 then no. of closing and opening brackets equal || opening bracket must always come before closing brackets //closing brackets must not come before first occurrence of openning bracket if (openB != closeB || closeFg == true || (phnNo.lastIndexOf("(") > phnNo.lastIndexOf(")")) || (phnNo.indexOf(")") < phnNo.indexOf("("))) { msg2 = "Brackets not closed properly."; FacesMessage message2 = new FacesMessage(msg2); message2.setSeverity(FacesMessage.SEVERITY_ERROR); throw new ValidatorException(message2); } if (phnNo.contains("()")) { msg2 = "Empty Brackets are not allowed."; FacesMessage message2 = new FacesMessage(msg2); message2.setSeverity(FacesMessage.SEVERITY_ERROR); throw new ValidatorException(message2); } if (phnNo.contains("(.") || phnNo.contains("(-") || phnNo.contains("-)")) { msg2 = "Invalid Phone Number.Check content inside brackets."; FacesMessage message2 = new FacesMessage(msg2); message2.setSeverity(FacesMessage.SEVERITY_ERROR); throw new ValidatorException(message2); } openB = 0; closeB = 0; closeFg = false; //check for valid language name.Allowed- brackets,dots,hyphen String expression = "([0-9\\-\\+\\(\\)]+)"; CharSequence inputStr = phnNo; Pattern pattern = Pattern.compile(expression); Matcher matcher = pattern.matcher(inputStr); String error = "Invalid Phone Number"; System.out.println("Index of plus is--->" + phnNo.lastIndexOf("+")); System.out.println("Bracket index--->" + phnNo.charAt(0)); if (matcher.matches()) { if (phnNo.contains("++") || phnNo.contains("--")) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, error, "Can not contain two hyphen(--) or plus(++)")); } else if (phnNo.lastIndexOf("+") > 1) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, error, "Plus sign should be in proper place")); } else if (phnNo.lastIndexOf("+") == 1 && phnNo.charAt(0) != '(') { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, error, "Plus sign should be in proper place")); } else if (phnNo.startsWith(" ") || phnNo.endsWith(" ")) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, error, "Space Not allowed at start and end")); } } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, error, "Only numeric character,+,() and - allowed")); } } }
Cheers:) Happy Learning