2012-03-19 31 views
24

thể trùng lặp:
A comprehensive regex for phone number validation
Validate phone number with JavaScriptCụm từ thông dụng để xác thực số điện thoại của Hoa Kỳ?

Tôi đang cố gắng để viết một biểu thức chính quy để xác nhận Mỹ số điện thoại của định dạng (123)123-1234 - đúng 123-123-1234 - true

mọi thứ khác không hợp lệ.

tôi đã đưa ra một cái gì đó giống như

^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$ 

Nhưng điều này xác nhận, 123) -123-1234 (123-123-1234

đó là không đúng.

+9

Tôi nghĩ đó là thân thiện hơn rất nhiều để cho mọi người gõ vào điện thoại của họ con số theo bất kỳ cách nào họ muốn. Chỉ cần loại bỏ các chữ số không và nhấn mạnh trên 10 chữ số còn lại sau đó. – Pointy

+0

Đây có thể là bản sao, nhưng vui lòng liên kết đến các câu trả lời trước đó trước khi đánh dấu bài đăng. – mindtonic

Trả lời

44

Cách đơn giản nhất để đối sánh cả hai

^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$ 

^[0-9]{3}-[0-9]{3}-[0-9]{4}$ 

là sử dụng luân phiên ((...|...)): xác định chúng là hai lựa chọn chủ yếu-riêng biệt:

^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 

Bằng cách này, khi người Mỹ đặt mã vùng trong ngoặc đơn, chúng tôi thực sự đặt một không gian sau đó; ví dụ: tôi muốn viết (123) 123-1234, không phải (123)123-1234. Vì vậy, bạn có thể muốn viết:

^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 

(Mặc dù nó có thể là tốt nhất để chứng minh một cách rõ ràng các định dạng mà bạn mong đợi các số điện thoại được in.)

+0

Biểu thức trên cho thành công cho (000) 000-0000 cách chúng ta có thể tránh điều đó? – HaBo

+2

@HaBo: Tại sao chúng ta muốn tránh điều đó? – ruakh

+4

vì đây không phải là số điện thoại hợp lệ. – HaBo

Các vấn đề liên quan