2011-12-14 4 views
0

문자열을 보내기 전에 내 응용 프로그램에서 텍스트 상자에 입력 한 텍스트가 영국 우편 번호 인 경우 해결해야합니다. 나는 그것을 위해 일할 정규 표현식을 가지고 있지 않으며 주위를 검색 한 후에는 그것을 해결할 수 없다! 과거에 비슷한 일을 한 사람이 있는지 궁금해 한 적이 있습니까?문자열이 영국 우편 인 경우 Iphone이 작동합니다.

누군가 올바른 방향으로 나를 가리킬 수 있다면 나는 가장 감사 할 것입니다!

답변

3

위키 백과는 good section about this 있습니다. 기본적으로 대답은 어떤 종류의 병리학 적 사건을 다루고 싶은지에 달려 있습니다. 예를 들어 :

BS7666 스키마에서 또 다른 짧은 정규 표현식은 다음과 같습니다

[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2} 

위의 표현 (예 : A, AA, Z 및 ZY로) 많은 존재하지 않는 지역 번호를 제외하지 못한다.

기본적으로 위키피디아의 해당 섹션을 읽고 필요한 항목을 결정하십시오.

1

이 정규식과 가장 포스트 코드를 일치시킬 수 있습니다 :

/[A-Z]{1,2}[0-9]{1,2}\s?[0-9]{1,2}[A-Z]{1,2}/i 
의미

Regular expression visualization

... 0-9 1 또는 두 번 다음에 A-Z 하나 또는 두 번 ({1,2}을), 다음을 임의로 ? 다음에 0-9의 공백으로 \s을 1 회 또는 2 회 반복 한 후, 1 회 또는 2 회 A-Z을 수행한다.

ZZ00 00ZZ과 같은 게시물 코드를 작성할 수 있기 때문에 일부 위양성과 일치하지만, 모든 게시물 코드와 정확히 일치시키기 위해서는 유일한 방법은 우체국에서 게시물 코드 데이터를 구매하는 것입니다. 비용이 많이 듭니다. 무료 우편 번호 데이터베이스를 다운로드 할 수도 있지만 100 % 적용 범위가 아닙니다.

희망이 도움이됩니다. 공백없이 포스트 코드에 대한

+0

이를 "WC1E 6BT" –

+1

@ 리차드 그 로브 스와 같이 유효한 엽서에 대해 거짓 네거티브를 표시합니다. 다음과 같이 수정할 수 있습니다 :/[AZ] {1,2} [0-9] [0-9A-Z]? \ s? 0-9] {1,2} [AZ] {1,2}/당신의 시나리오를 다룰 것입니다. –

3

(예 SE19QZ) 내가 사용 (그것의 ;-) 아직 저를 실패하지 않음)

^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2}) 

경우 다음 공간 (예를 들어 SE1 9QZ) :

^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$ 
+0

Nik Burns - 굉장한 정규 표현식. 감사 :) –