API/Regex nhận diện mobile (Vietnam)

Xin chào,

Hiện mình đang viết 1 cái API nhỏ, để lấy số điện thoại (Vietnam) từ text và format theo đinh dạng chuẩn 10 số (và 11 số cũ)
Do khi người ta viết số điện thoại, thì thuờng họ không theo quy chuẩn nào hết, thậm chí dư số.
Thí dụ:
(+084)(0)90.123.4567
thay vì ghi +84901234567

Mình cố gắng xử lý tất cả các trường hợp có thể xảy ra, nhưng khả năng có giới hạn, nên nhờ mọi người test giúp và trường hợp nào API lọc sai hay không ra kết quả, nhờ mọi người comment đẻ mình kiếm cách sửa lại cho hoàn thiện hơn.

Cảm ơn

link:
v1: http://15dollars.xyz/v1/mobile/vietnam?string=test(+084)(0)168.123.4567sdfsdf

Update:

v2: http://15dollars.xyz/v2/mobile/vietnam?string=test(084)(0)168.123.4567sdfsdf%20aadas%20098%20765%207846%20and%201111%20111%20and%20123123123123123

1 Like

Dường như bạn không và/ hoặc không cần sử dụng đển RegEx phức tạp, chỉ có 1 chút thôi, bởi vì theo như cách xuất định dạng 10 số của bạn thì mình thấy không có chỗ nào để hoàn thiện nếu bạn đang làm như sau:

  • Thay thế tất cả những ký tự không phải là số bằng ký tự “” rỗng
  • Cắt chuỗi lấy đúng 10 ký tự cuối (đếm từ phải sang trái)

Suy ra, bạn không gặp sai lầm nào trừ chuỗi số ít hơn 10 ký tự => thông báo số ĐT không hợp lệ.

1 Like

À, xin lỗi, mình đã update link version 2

http://15dollars.xyz/v2/mobile/vietnam?string=test(084)(0)168.123.4567sdfsdf%20aadas%20098%20765%207846%20and%201111%20111%20and%20123123123123123

Cái này mới đúng theo câu hỏi ban đâu

  1. loại hết tất cả kí tự không phải số
  2. kiểm tra đầu 84 hay 0 và kiểm tra length

thay ví cố gắng kiểm tra, thì mình chuẩn hóa luôn, nhập kiểu gì thì nhập, nhưng khi lưu là mình sẽ lưu theo kiểu chuẩn hóa
hoặc là forced input theo chuẩn hóa của mình

còn nếu đã không dùng đến (gửi sms, call), chỉ xem như text thì cũng không cần validate nhiều làm gì cho mệt

1 Like

À, do nhu cầu của mình là “cào số điện thoại” từ text có sẵn (ví dụ như lấy số phone trong đoạn văn, trong comment ở facebook…), chứ không phải là để validate cái user input từ form.

Mình muốn lấy thông tin chính xác nhất có thể, vì để sau đó còn search theo số phone nữa

Jamie Zawinski, a world class hacker and developer said:

Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.

I share his view too. I use RegEx only reluctantly and only when there is no more room to work around a problem… More HERE

1 Like

Yes, I do acknowledge the downside of using regex and still want to use this approach.
It’s a pet project and I want to challenge (or enjoy the challenge) myself a bit.

1 Like

No. I’m not demonizing RegEx. I’m just saying that RegEx shouldn’t be overused like in the blog post above.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?