C# 如何验证此加拿大邮政编码表达式?

C# 如何验证此加拿大邮政编码表达式?,c#,regex,C#,Regex,我有一个注册表格,我想做的是显示一个错误,如果用户选择美国作为一个国家,但在加拿大邮政编码 if (ddCountry.SelectedValue == usValue && Regex.Match(TextboxZipCode.ToString(),"^[abceghjklmnprstvxyABCEGHJKLMNPRSTVXY][0-9][abceghjklmnprstvwxyzABCEGHJKLMNPRSTVWXYZ] {0,1}[0-9][abceghjklmnp

我有一个注册表格,我想做的是显示一个错误,如果用户选择美国作为一个国家,但在加拿大邮政编码

if (ddCountry.SelectedValue == usValue 
    && Regex.Match(TextboxZipCode.ToString(),"^[abceghjklmnprstvxyABCEGHJKLMNPRSTVXY][0-9][abceghjklmnprstvwxyzABCEGHJKLMNPRSTVWXYZ] {0,1}[0-9][abceghjklmnprstvwxyzABCEGHJKLMNPRSTVWXYZ][0-9]$").Success)   
{
  // Show error.....
}

这是我的代码,我通过谷歌搜索找到的
regex
表达式,该表达式验证了加拿大zipcode。无论出于什么原因,当我测试它时,它跳过了我的if语句,当我选择美国作为具有有效加拿大邮政编码的国家时。

这似乎是一个奇怪的验证选择-如果他们选择了我们并且没有有效的美国邮政编码,为什么不显示一个错误呢?(
$[1-9][0-9]{4}(?:-[0-9]{4})?$
)。在任何情况下,您都应该首先检查
TextboxZipCode.ToString()
的返回值-它可以让您深入了解匹配不起作用的原因。我将更改我的表达式,看看它是否起作用,但这很奇怪,我运行了调试器,zipcode正好与regex表达式匹配。不确定它为什么不起作用你应该给我们你正在使用的测试邮政编码,这样我们可以将它与正则表达式进行比较。不确定你指的是什么代码,我使用的是正则表达式,我使用的是正则表达式测试仪,它对加拿大zipcode进行了正则化,无论用户是否输入空格,例如K1A 0B1或K1A0B1。@FrankieTheKneeMan-一件事:美国邮政编码的第一部分是\d{5}。0是一个完全有效的起始数字(它代表新英格兰)。