我需要使用C#(.NET)正则表达式验证加拿大邮政编码(例如,M4B 1C7
)。加拿大邮政编码验证
45
A
回答
68
加拿大邮政编码不能包含字母d,F,I,O,Q,或U,和不能启动W或Z:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
如果你想在中间的可选空间:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
2
我建议如下:
bool FoundMatch = false;
try {
FoundMatch = Regex.IsMatch(SubjectString, "\\A[ABCEGHJKLMNPRSTVXY]\\d[A-Z] ?\\d[A-Z]\\d\\z");
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
0
0
验证邮政编码的格式而不验证其含义是不值得的,因为拼写错误仍然会导致错误地址的有效邮政编码。你想根据地址数据库验证代码。见http://www.canadapost.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf
1
下面是规则http://en.wikipedia.org/wiki/Postal_code#Reserved_characters
ABCEGHJKLMNPRSTVXY <-- letter used
DFIOQU <-- letters not used because it mixes up the reader
WZ <-- letters used but not in the first letter
With that in mind the following in the proper regex
@[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][\s][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
0
试试这个:
function postalCodeCheck (postalCode, type) {
if (!postalCode) {
return null;
}
postalCode = postalCode.toString().trim();
var us = new RegExp("^\\d{5}(-{0,1}\\d{4})?$");
// var ca = new RegExp(/^((?!.*[DFIOQU])[A-VXY][0-9][A-Z])|(?!.*[DFIOQU])[A-VXY][0-9][A-Z]\ ?[0-9][A-Z][0-9]$/i);
var ca = new RegExp(/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]()?\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i);
if(type == "us"){
if (us.test(postalCode.toString())) {
console.log(postalCode);
return postalCode;
}
}
if(type == "ca")
{
if (ca.test(postalCode.toString())) {
console.log(postalCode);
return postalCode;
}
}
return null;
}
-2
class Program
{
static void Main(string[] args)
{
string c1;
string c2;
string c3;
string c4;
string c5;
string c6;
string c7;
int sortie;
bool parfais = true;
Console.WriteLine("entrer votre code postal");
string cp = Console.ReadLine();
if (cp.Length == 7)
{
c1 = cp.Substring(0, 1);
c2 = cp.Substring(1, 1);
c3 = cp.Substring(2, 1);
c4 = cp.Substring(3, 1);
c5 = cp.Substring(4, 1);
c6 = cp.Substring(5, 1);
c7 = cp.Substring(6, 1);
if (int.TryParse(c1, out sortie))
{
parfais = false;
Console.WriteLine("le 1er caratere doit etre une lettre");
}
if (int.TryParse(c2, out sortie) == false)
{
parfais = false;
Console.WriteLine("le 2e caratere doit etre un nombre");
}
if (int.TryParse(c3, out sortie))
{
parfais = false;
Console.WriteLine("le 3e caratere doit etre une lettre");
}
if (c4.Contains(" ") == false)
{
parfais = false;
Console.WriteLine("vous devez utiliser un espace");
}
if (int.TryParse(c5, out sortie) == false)
{
parfais = false;
Console.WriteLine("le 5e caratere doit etre un nombre");
}
if (int.TryParse(c6, out sortie))
{
parfais = false;
Console.WriteLine("le 6e caratere doit etre une lettre");
}
if (int.TryParse(c7, out sortie) == false)
{
parfais = false;
Console.WriteLine("le 7e caratere doit etre un nombre");
}
else if(parfais == true)
{
Console.WriteLine("code postal accepter");
Console.ReadLine();
}
}
else
{
Console.WriteLine("le code postal doit contenir 7 caratere incluant l'espace");
}
Console.ReadLine();
相关问题
- 1. C# - 验证美国或加拿大邮政编码
- 2. 加拿大邮政'查找邮政编码'屏幕刮码
- 3. 验证文本输入匹配加拿大邮政编码(例如“A1S2S3”)
- 4. Flex:禁用非美国或加拿大的邮政编码验证
- 5. 邮政编码验证
- 6. 验证邮政编码?
- 7. Postgresql - 域名为加拿大邮政编码
- 8. 问题与正则表达式为加拿大邮政编码
- 9. Oracle Spatial:针对加拿大邮政编码的sdo_nn_distance问题
- 10. 从邮政编码获取街道名称 - 加拿大
- 11. 用于邮政编码验证的Javascript
- 12. jquery验证邮政编码的规则
- 13. jQuery验证邮政编码和城市
- 14. JQuery验证与邮政编码
- 15. 邮政编码半径验证
- 16. 验证Access中的邮政编码?
- 17. jQuery验证英国邮政编码
- 18. 在jQuery中验证邮政编码?
- 19. Acumatica邮政编码验证和匹配
- 20. 我如何验证我的数组中的加拿大人(M3M 2B2)等邮政编码?
- 21. 邮政编码
- 22. 邮政编码
- 23. 编写JavaScript邮政编码验证功能
- 24. 如何验证用户输入的邮政编码是否正确美国邮政编码
- 25. 如果邮政编码格式动态变化,如何在java中验证邮政编码?
- 26. 邮政信箱验证
- 27. 加拿大邮政AddressComplete“填充”不工作
- 28. 获取加拿大邮政发货警告(REST + PHP)
- 29. WP电子商务加拿大邮政发货模块
- 30. 如何在VB.NET中验证邮政编码?
+1“加拿大邮政编码不能有某些字母”。你可能还想补充一点,领导信件更受限制,然后是第二和第三。 – 2009-07-18 04:03:07
谢谢你的回答...这对M4B1E8等代码工作正常...但它不适用于M4B 1E8。加拿大邮政在3个字符之后可能有空格。参考:http://www.mongabay.com/igapo/toronto_zip_codes.htm – Jimmy 2009-07-18 21:57:33