邮政编码字段的Javascript验证

时间:2012-11-06 07:34:19

标签: javascript validation

我有JavaScript代码来验证页面中的Zip代码字段,如下所示:

<script type="text/javascript">
 var zip=$("#zip").val();
if (zip == '') {
               errorMessage = REG_FIELD_EMPTY_ZIP;
               $('#msg_zip').html(errorMessage).show();
               }
               else {
                if ((zip.length) < 5) 
                    {
                    errorMessage = REG_FIELD_LENGTH_ZIP;
                $('#msg_zip').html(errorMessage).show();
                }
                    else 
                    {
                if (!reg.test(zip)) {
                errorMessage = REG_FIELD_ONLYDIGITS_ZIP;
                $('#msg_zip').html(errorMessage).show();
                }
               else {
                $('#msg_zip').html('').hide();
                    }
             }
           }
           </script>

在这里,我想添加更多条件: 1 GT;此邮政编码字段还应支持加拿大邮政编码格式(A#A#A#),有或没有它应该接受的空格。如果该值不是加拿大邮政编码格式, 2 - ;它应该只接受5位数。 如何修改上面的脚本,以便我可以使我的邮政编码字段也接受加拿大邮政编码格式。 通过搜索我发现一些正则表达式接受加拿大邮政编码为/ ^ [ABCEGHJKLMNPRSTVXY] \ d [A-Z] * \ d [A-Z] \ d $ /;但是当我测试它时,它不接受小写字母 任何人都可以澄清如何更改我的脚本,以便它应接受加拿大邮政编码或只接受5位数。在此先感谢。

1 个答案:

答案 0 :(得分:1)

加拿大邮政编码的正则表达式是正确的。如果您希望它接受小写字母,则必须使用不区分大小写的选项( i ):

(/^[ABCEGHJKLMNPRSTVXY]\d[A-Z] *\d[A-Z]\d$/i).test(zip)

5位数的正则表达式:

/^\d{5}$/

结合这两个:

(/^[ABCEGHJKLMNPRSTVXY]\d[A-Z] *\d[A-Z]\d$/i).test(zip) || (/^\d{5}$/).test(zip)