看到非常通用的电话号码 - 传真号码验证码 - 希望它会有用
http://oracleadf-java.blogspot.in/2013/05/phone-number-custom-validation-in-adf.html
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"));
}
}
}