2014-10-08 4 views
0

여기에 지정된 우편 번호 정규 표현식을 사용하려고합니다 : UK Postcode Regex (Comprehensive)은 자바 스크립트와 함께 작동하지만 작동하지 않는 것 같습니다. 내가 사용하고 있습니다 :Javascript 정규 표현식 오류 우편 번호 테스트

var postcode = "^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$"; 
var aPCode = frm.PCode.value; 
if (!(postcode.test(aPCode))) 
{ 
    AnError += "Invalid Postcode.\n"; 
} 

내가 갖는이 오류는 if (!(postcode.test(aPCode))) 라인입니다. IE7 (자바 스크립트 오류가 활성화 된 브라우저)는 "개체가이 속성이나 메서드를 지원하지 않습니다."라는 오류와 함께 다시보고합니다. 이것은 내가 문자열에 .test 메서드를 사용할 수 없다는 것을 의미하지만 그것이 사용되어야하는 곳입니다. 그렇지 않습니까? 내 코드로 오류를 찾을 수없는 것 같습니다.

답변

1

postcode은 정규 표현식이 아닌 문자열입니다. 슬래시에 싸서 그것을 정규 표현식을 확인하기 위해 포장 따옴표를 제거 :

var postcode = /^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$/; 

see the docs

을하거나 변환 할 RegExp 객체로 정규 표현식의 문자열 버전을 실행

var postcode = "^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$"; 
var postcode = new RegExp(postcode);