Tôi cần xác thực mã bưu điện của Canada (ví dụ: M4B 1C7
) bằng cách sử dụng các biểu thức chính quy C# (.NET).Xác thực mã bưu điện của Canada
Trả lời
mã bưu chính Canada không thể chứa các chữ cái D, F, I, O, Q, hoặc U, và không thể bắt đầu với W hoặc Z:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Nếu bạn muốn một không gian tùy chọn ở giữa:
[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]
Tôi đề nghị như sau:
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
}
Tôi đã sửa đổi câu trả lời của tôi để loại trừ chữ không hợp lệ trong ký tự đầu tiên, theo http://www.infinitegravity.ca/postalcodeformat.htm. – Templar
f bạn không muốn phải thực hiện hai dấu gạch chéo cho mỗi dấu gạch chéo, sử dụng một chuỗi @ chữ như trong '@" \ A [ABCEGHJKLMNPRSTVXY] \ d [A-Z]? \ D [A-Z] \ d \ z "'. – cdmckay
Something như thế này:
^[A-Z]\d[A-Z] \d[A-Z]\d$
Không phải tất cả các chữ đều hợp lệ trong mã bưu điện. – Tilendor
Xác thực định dạng mã bưu điện mà không xác thực ý nghĩa của mã không đáng giá, vì lỗi chính tả vẫn có thể dẫn đến mã bưu chính hợp lệ cho địa chỉ sai. Bạn muốn xác thực mã chống lại cơ sở dữ liệu địa chỉ. Xem http://www.canadapost.ca/cpo/mc/business/productsservices/atoz/postalcodeproducts.jsf
liên kết canada post đã chết – billynoah
Dưới đây là các quy tắc 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]
Hãy thử điều này:
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;
}
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();
OP muốn sử dụng cụm từ thông dụng. Không có câu trả lời nào trong câu trả lời này. –
- 1. Xác thực Mã bưu điện của Canada Regex
- 2. Regex hiệu quả đối với chức năng mã bưu điện của Canada
- 3. Xác thực Hộp thư bưu điện
- 4. Google maps - Mã bưu điện
- 5. Đăng ký biểu mẫu và xác nhận mã bưu điện
- 6. C# - Xác nhận mã zip của Hoa Kỳ hoặc Canada
- 7. javascript regex cho mã bưu chính canadian
- 8. Mã bưu điện phát một giai điệu Giáng sinh
- 9. iOS Tìm vị trí (Vĩ độ, kinh độ) từ Mã bưu điện
- 10. Kiểu dữ liệu Mysql cho Mã Zip của Hoa Kỳ (Mã Bưu điện)
- 11. Anh Mã bưu Regex
- 12. Cần phải xác định giữa phạm vi mã bưu chính
- 13. Nhận tin nhắn từ bưu điện
- 14. Đã nhận được tin nhắn bưu điện
- 15. jQuery đường bưu điện đến Rails
- 16. Mã bưu điện của Vương quốc Anh -> Đông, hướng bắc
- 17. Ví dụ tốt về quy trình tra cứu mã bưu điện của Vương quốc Anh
- 18. Nhận ngày đầu tiên của tháng ở bưu điện
- 19. Nhận khóa tư vấn ở bưu điện
- 20. Tìm thị trấn trong bán kính 10 dặm mã bưu điện. Google maps API
- 21. Thứ tự tham gia bảng trong bưu điện
- 22. Trình phân tích cú pháp địa chỉ bưu điện Java
- 23. json đường bưu điện đến mùa xuân khiển MVC
- 24. Xác thực trường thư điện tử
- 25. "Tìm vị trí gần nhất" bằng Mã Zip/Mã bưu chính?
- 26. Tôi có thể tìm danh sách tất cả các mã bưu điện của Vương quốc Anh bao gồm tên phố và tọa độ chính xác của chúng?
- 27. được vĩ độ và kinh độ sử dụng mã bưu điện
- 28. Cách ẩn phương thức thanh toán trong Woocommerce dựa trên Mã bưu điện
- 29. Tất cả các quốc gia Các thành phố và mã bưu điện trong một ứng dụng
- 30. Loại cột tốt nhất cho mã bưu điện Hoa Kỳ là gì?
+1 cho "mã bưu chính của Canada không thể có các chữ cái nhất định". Bạn cũng có thể muốn thêm rằng chữ cái hàng đầu bị hạn chế hơn, sau đó là chữ cái thứ hai và thứ ba. –
cảm ơn một tấn cho câu trả lời ... điều này hoạt động tốt cho các mã như M4B1E8 ... nhưng nó sẽ không làm việc cho M4B 1E8. Bưu điện Canada có thể có không gian sau 3 ký tự..được đề cập ở đây: http: //www.mongabay.com/igapo/toronto_zip_codes.htm – Jimmy
Lý tưởng nhất, bạn nên bỏ qua khoảng trống trên đầu vào và chuẩn hóa dữ liệu thành định dạng chuẩn để lưu trữ. Bằng cách đó, mọi người có thể nhập mã bưu điện có hoặc không có khoảng trắng và không thành vấn đề. Bạn có thể định dạng chúng cho mục đích đầu ra nếu cần. – Rob