测试邮政编码时发生Javascript正则表达式错误

测试邮政编码时发生Javascript正则表达式错误,javascript,regex,Javascript,Regex,我试图使用这里指定的邮政编码正则表达式:使用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-yABE

我试图使用这里指定的邮政编码正则表达式:使用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(我启用了JavaScript错误的浏览器)返回错误“Object不支持此属性或方法”。这意味着我不能对字符串使用
.test
方法,但这就是应该使用它的地方,不是吗?我似乎找不到代码的错误。

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}))$/;

或者将正则表达式的字符串版本运行到
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);