외부 도구가 없기 때문에 정규식을 사용하지 않고 우편 번호에 일부 패턴을 적용하는 코드는 다음과 같습니다. 서블릿에서 제공 한 패턴을 가질 수는 있지만 명확성을 위해 예제에 나와 있습니다.
public static boolean isProbablyValidUSZipCode(CharSequence zip) {
String[] patterns = {"#####", "#####-####", "##### ####", "#########"};
try {
for (String pattern : patterns) {
if (checkAgainstPattern(zip, pattern)) {
return true;
}
}
return false;
}
catch (NullPointerException ignored) {
return false;
}
}
private static boolean checkAgainstPattern(CharSequence s, CharSequence pattern) {
if (s.length() != pattern.length()) {
return false;
}
for (int i = 0; i < pattern.length(); i++) {
char c = s.charAt(i);
switch (pattern.charAt(i)) {
case '#':
if (!Character.isDigit(c)) {
return false;
}
break;
default:
if (c != pattern.charAt(i)) {
return false;
}
}
}
return true;
}
영숫자를 허용하려면 당신이 Character.isLetterOrDigit
에 Character.isDigit
을 변경할 수 있습니다 : 귀하의 질문에 국가를 지정하지 않지만 그 패턴이 내게 잘 알고 있기 때문에
, 나는 미국 우편 번호 하나를 게시 할 예정입니다. 그러나 다른 나라들이 서로 다른 제약 조건을 가지고 있다면 추악해질 것입니다.
물론 이것은 존재하지 않거나 예약 된/그렇지 않은 경우 유효하지 않은 우편 번호를 찾기 위해 어떤 종류의 조회도하지 않지만 전혀 유효성 검사를하지 않는 것보다 낫습니다. 나중에 어떤 룩업 서비스를 찾으면, 나는 더 비쌀 것이라고 생각하기 때문에 항상이 정적 메소드들 이후에 호출 할 수 있습니다.
관리자 설정 페이지를 통해 자신의 우편 번호 형식을 정의하거나 미리 정의 된 형식 목록에서 선택할 수 있기를 원하십니까? –
@Ben van Gompel. 드롭 다운에 미리 정의 된 우편 번호 형식이 있습니다. – ashishjmeshram
그래서 드롭 다운의 각 옵션에 대해 정규 표현식 (또는 유사한 것을 지정)을 지정하고 우편 번호의 확인에 올바른 옵션이 사용되는지 확인해야합니다. –