우편 번호에 대한 정규식


118

중복 가능성 :
최종 우편 번호와 zip regex는 무엇입니까?

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

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

모든 조언과 제안을 많이 주시면 감사하겠습니다. 감사 !


4
중복 된 폐쇄는 개략적 인 것처럼 보입니다.이 질문은 모든 국가의 우편 번호와 일치하는 정규식을 요구하는 반면,이 질문은 미국 전용 인 우편 번호와 일치하는 정규식을 요구하는 것입니다. 속는 범위 내에서 좁은 - 그러나이 있다 속는에서 찾을 수 할 수있는 대답은 사실. 미국을 포함한 100 개 이상의 국가에 대한 유니 코드 CLDR (오래된, 현재는 사용되지 않지만 대부분의 경우 여전히 적절할 것임) 우편 번호 정규식을 나열하는 stackoverflow.com/a/7185241/1709587 을 참조하십시오 . 미국 정규식은 \d{5}([ \-]\d{4})?.
Mark Amery

답변:


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

7
\s탭과 새 줄을 포함한 모든 공백과 일치합니다.
eyelidlessness

1
안녕 공간이없는 상태 123,451,234에 대해 무엇을
아제 Suwalka

4
@ProVega : 귀하가 연결 한 (현재 삭제 된) 답변에 대한 댓글을 읽는 중, 잘못된 것 같습니다. 예를 들어, 00544은 유효한 우편 번호입니다. 544아니다.
Keith Thompson

2
@AjaySuwalka : 공간없이 123451234를 수용하기 위해해야 ​​할 일은 장소 a? [-\ s] 이후에는 다음과 같이됩니다. ^ \ d {5} (? : [-\ s]? \ d {4})? $
Grungondola

6
파티에 조금 늦었고 공에서 가장 예쁜 종은 아닐 수도 있지만 하이픈의 양쪽에 추가 옵션 공간을 추가했습니다. /(^\d{5}(?:[\s]?[-\s][\s]?\d{4})?$)/
Birrel

4

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

^\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})?$

추가 설명은이 데모를 참조하십시오.

RegEx 회로

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}`);
    });
}


0

RegEx를 자주 사용하는 대부분의 사람들에게는 이것이 명백 할 수 있지만 RegEx를 처음 사용하는 독자가 있다면 내 프로젝트 중 하나에 도움이되는 관찰 내용을 지적해야한다고 생각했습니다.

@kennytm의 이전 답변에서 :

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

…? = 선택 사항 앞의 패턴 (조건 1의 경우)

표준 5 자리 및 +4 우편 번호를 모두 허용하려는 경우 이것이 좋은 예입니다.

필요한대로 US 'Zip + 4'형식의 우편 번호 만 일치 시키려면 (조건 2 및 3 만 해당) ?마지막 5 개 문자 그룹과 일치하도록 마지막을 제거하기 만하면 됩니다.

RegEx를 수정하는 데 권장하는 유용한 도구는 다음과 같습니다.

https://regexr.com/

필자는 필요한 것과 비슷한 일을하지만 좀 더 잘 맞출 수있는 RegEx를 찾을 때이 도구를 자주 사용합니다. 또한 멋진 RegEx 참조 메뉴와 변경 사항이 입력 한 샘플 텍스트의 일치 항목에 어떤 영향을 미치는지 알 수있는 유익한 인터페이스가 있습니다.

잘못된 것이 있거나 중요한 정보를 놓친 경우 수정 해주십시오.


또는이 정규식 자습서를 참조 할 수 있습니다.- youtube.com
watch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.