developer tip

우편 번호 정규식

optionbox 2020. 7. 26. 12:54
반응형

우편 번호 정규식


중복 가능성 :
최종 우편 번호 및 우편 정규식은 무엇입니까?

우편 번호에 대한 세 가지 조건을 모두 만족시킬 수있는 Regex가 필요합니다. 예 :

  1. 12345
  2. 12345-6789
  3. 12345 1234

모든 조언과 제안을 부탁드립니다. 감사 !


^\d{5}(?:[-\s]\d{4})?$
  • ^ = 문자열의 시작.
  • \d{5} = 5 자리 일치 (조건 1, 2, 3)
  • (?:…) = 그룹화
  • [-\s] = 공백 (조건 3의 경우) 또는 하이픈 (조건 2의 경우)과 일치
  • \d{4} = 4 자리 일치 (조건 2, 3)
  • …? = 선택 전의 패턴 (조건 1의 경우)
  • $ = 문자열의 끝.

나열된 세 가지 조건에 대해서만 다음 표현식이 작동 할 수도 있습니다.

^\d{5}[-\s]?(?:\d{4})?$
^\[0-9]{5}[-\s]?(?:[0-9]{4})?$
^\[0-9]{5}[-\s]?(?:\d{4})?$
^\d{5}[-\s]?(?:[0-9]{4})?$

자세한 설명은이 데모를 참조하십시오.

5 ~ 4 자리 또는 9 자리의 연속 우편 번호에 예상치 못한 추가 공백이있는 경우 다음과 같습니다.

123451234
12345 1234
12345  1234

예를 들어이 표현식은 제약 조건이 적은 보조 옵션입니다.

^\d{5}([-]|\s*)?(\d{4})?$

자세한 설명은이 데모를 참조하십시오.

정규식 회로

jex.im은 정규 표현식을 시각화합니다.

여기에 이미지 설명을 입력하십시오

테스트

const regex = /^\d{5}[-\s]?(?:\d{4})?$/gm;
const str = `12345
12345-6789
12345 1234
123451234
12345 1234
12345  1234
1234512341
123451`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

참고 URL : https://stackoverflow.com/questions/2577236/regex-for-zip-code

반응형