Canadian postal code regex?
在邮政编码字段中,只有以下格式应该是有效的。
B1C 2B3 或 B1C3D3
如何为此编写正则表达式?
编辑:
1
|
^([a–zA–Z]//d[a–zA–z]( )?//d[a–zA–Z]//d)$
|
这是我的正则表达式,但它只接受 B1C C1B(注意中间有空格)格式。即使没有空间也应该是有效的
您希望根据地址数据库验证邮政编码。并非
1
2 3 |
Z0Z0Z0
Z9Z9Z9 Y7Y7Y7 |
关于初步检查,最简单的可能是通过 VB.NET 代码对值进行预处理。您需要删除空格并转换为大写。那么你的正则表达式非常简单:
1
2 3 4 5 6 7 8 9 10 11 12 |
Imports System.Text.RegularExpressions
Module Module1 Private Function CanBeValidCanadianPostalCode(postal_code As String) As Boolean |
这里有一些真正的不一致之处。您提供的正则表达式
为了雪上加霜,您提供的正则表达式使用正确的加拿大格式。所以没有任何真正的理由来改变它。我的意思是,我会把它改成这个
但是,就使用而言,它可以像这样在 C# 中使用:
1
2 3 4 |
var matches = Regex.Match(inputString, @"^([a-zA-Z]//d[a-zA-Z]( )?//d[a-zA-Z]//d)$");
if (!matches.Success) { // do something because it didn‘t match } |
现在它已被标记为 VB.NET:
1
2 3 4 |
Dim matches = Regex.Match(inputString,"^([a-zA-Z]//d[a-zA-Z]( )?//d[a-zA-Z]//d)$")
If Not matches.Success Then ‘ do something because it didn’t match End If |
使用以下正则表达式进行加拿大邮政编码验证
1
|
^[ABCEGHJKLMNPRSTVXY]{1}//d{1}[A–Z]{1} *//d{1}[A–Z]{1}//d{1}$
|
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269804.html