0

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

<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> 此邮政编码字段还应支持加拿大邮政编码格式 (A#A #A#),它应该接受或不带空格。如果该值不是加拿大邮政编码格式,2> 它应该只接受 5 位数字。如何修改上述脚本,以便我的邮政编码字段也可以接受加拿大邮政编码格式。通过搜索,我发现一些正则表达式可以接受加拿大邮政编码为 /^[ABCEGHJKLMNPRSTVXY]\d[AZ] *\d[AZ]\d$/; 但是当我测试它时,它不接受小写字母。
任何人都可以澄清如何更改我的脚本,以便它应该接受加拿大邮政编码或只接受 5 位数字。提前致谢。

4

1 回答 1

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)
于 2012-11-06T07:38:45.283 回答