2013-04-02 36 views
5

Tôi đang cố thêm xác nhận biểu thức chính quy đơn giản vào một trong các quan sát của tôi bằng Knockout-Validation.Knockout-Validation Sử dụng biểu thức chính quy để xác nhận số điện thoại

tôi có như sau:

self.ContactPhone = ko.observable().extend({ 
      required: true, 
      pattern: { 
       message: 'Invalid phone number.', 
       params: '^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$' 
      } 
     }); 

Tuy nhiên, không có vấn đề gì tôi nhập, nó sẽ trả về thông báo 'số điện thoại không hợp lệ.' Có cách nào tôi cần định dạng biểu thức không? Tôi đã thử nghiệm nó bằng cách sử dụng hoàn toàn JavaScript và nó hoạt động tốt.

Trả lời

10

Bạn cần phải thoát khỏi dấu gạch chéo ngược nếu không javascript sẽ xử lý một dấu gạch chéo ngược của bạn như một ký tự thoát cho ký tự tiếp theo. Điều này là bởi vì đây là một chuỗi và không phải là một regexp chữ.

Chỉnh sửa: Thực ra tôi chỉ kiểm tra, và bạn chỉ có thể sử dụng một regexp đen thay thế, do một trong những sẽ làm điều đó:

http://jsfiddle.net/antishok/ED3Mh/2/

self.ContactPhone = ko.observable().extend({ 
    required: true, 
    pattern: { 
     message: 'Invalid phone number.', 
     params: /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/    
    } 
}); 

hay:

params: '^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$' 
4

Trong trường hợp bạn không phải sử dụng Cụm từ thông dụng, đây là cách tự nhiên

self.ContactPhone = ko.observable().extend({ phoneUS : true }); 

Được liệt kê thêm here.

+0

Bạn có biết tại sao 'phoneUS 'không được liệt kê trên trang web Xác nhận Knockout chính thức - https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Native-Rules? –

0

Xem ví dụ dưới đây làm việc tại jsfiddle sử dụng biểu thức chính quy cho phép khoảng trắng và + và() cùng với số sau liên kết

jsfiddle.net/JoelDerrick/f6g8npv6/1/

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