加拿大邮政编码的JavaScript正则表达式

8

可能重复:
加拿大邮政编码验证

我需要用javascript正则表达式验证加拿大的邮政/邮编。 加拿大的邮政编码格式为“A1A 1X1”或“a1a1x1”。但是它不包括字母D、F、I、O、Q或U,我在这里找到了一些但那些是C#的。


1
var tmp = new RegExp(/^(?!.*[DFIOQU])[A-VXY][0-9][A-Z] +?[0-9][A-Z][0-9]$/i)参考:http://my.safaribooksonline.com/9780596802837/id2991897。其中多个空格是可选的,不区分大小写。 - Dathan
值得注意的是,一个好的问题应该展示出你的一些努力。;-) - Tass
1
@Tass 请看下面我的回答 - DarknessBeginsHere
2个回答

16
function checkPostal(postal) {
    var regex = new RegExp(/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]( )?\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i);
    if (regex.test(postal.value))
        return true;
    else return false;
}

可能需要去除左/右(甚至中间)的空格。 - Derek Schrock
中间的空格是可选的,所以它可以很好地完成工作。只需将返回值调整为true(第一个)和false(最后一个)。然后,请注意此函数在变量“postal”“value”上测试正则表达式。我已将第三行重新编辑如下: if (regex.test(postal)) ...直接向函数提供值。 - guylabbe.ca
1
请注意,随着需要新的邮政编码,某些字符的使用可能会随时间而改变。 - Below the Radar

-2

由于例外单词没有共同点,有效单词应逐个书写。

[ABCEGHJKLMNPRSTVWXYZ]

后跟一个数字

\d

并且这样做三次

{3}

最后,我们添加“i”以实现不区分大小写

var regex = /([ABCEGHJKLMNPRSTVWXYZ]\d){3}/i;

第一个数字不能是Z,例如。 - ItalyPaleAle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接