Chào mừng đến với BIS Đăng nhập | Đăng ký | Trợ giúp
trong Tìm kiếm

Sử dụng Regular Expression trong Javascript

Bài cuối 10-15-2010 01:21 PM của trustmem. 0 trả lời.
Trang 1 trong số 1 (1 nội dung)
Sắp xếp bài viết: Trước Tiếp theo
  • 10-15-2010 01:21 PM

    • trustmem
    • 10 thành viên năng nổ nhất
    • Tham gia 01-06-2009
    • Điểm 255

    Sử dụng Regular Expression trong Javascript

    Sử dụng Regular Expression trong Javascript

    Bắt đầu từ phiên bản Javascript 1.2 thì Regular Expression đã được tích hợp sẵn. Do đó từ trình duyệt Internet Explorer 4.0 trở về sau, Netcapse 4.0 trở về sau, tất cả các phiên bản của Mozilla Firefox, các trình duyệt phổ biến hiện nay như Chrome, Opera, Safari... đều sử dụng Javascript >= 1.2 do đó ta đều có thể sử dụng Regular Expression trên các trình duyệt vừa nêu.
    Khi có nhu cầu kiểm tra tính hợp lệ của dữ liệu, tìm kiếm hoặc thay thế các dữ liệu theo một nguyên tắc nào đó thì sử dụng Regular Expression sẽ giúp ta tiết kiệm được rất nhiều thời gian.

    ECMA là viết tắt của tổ chức: "European Computer Manufacturers Association" được thành lập vào năm 1959. Truy cập ecma-internation.org để biết thêm thông tin.

    Nói thêm về quá trình đưa Regular Expression vào Javascript. Bắt đầu từ phiên bản ECMA-262 thì Regular Expression được công nhận là một thành phần chuẩn trong ngôn ngữ. Do đó các ngôn ngữ lập trình phát triển trên yêu cầuđặc tả của bản ECMA-262 thì đều hổ trợ Regular Expression. Phiên bản Javascript 1.2 là phiên bản phát triển dựa trên bản đặc tả ECMA-262 do đó hổ trợ sẵn Regular Expression. Ngoài Javascript còn có rất nhiều ngôn ngữ khác phát triển trên yêu cầuđặc tả của ECMA-262 mà phổ biến nhất hiện nay là Action Script. Phiên bản Action Script 3.0 hổ trợ đầy đủ đặc tả ECMA-262 do đó từ bản này chúng ta có thể sử dụng Regular Expression hoàn toàn như trên Javascript.

    Cách định nghĩa Regular Expression trên Javascript

    Sử dụng Javascript ta có thể viết theo cách như sau: /pattern/modifiers với pattern là mẫu mà ta cần sử dụng, modifiers là các tham số tùy chọn thêm. Lưu ý là pattern là chuỗi bắt buộc còn modifiers là tùy chọn. Cú pháp này dựa trên cú pháp của ngôn ngữ Perl. Dưới đây là một số từ khóa modifers mà Javascript hổ trợ:

    • /g bật chế độ tìm kiếm toàn cục ("global" match). Khi ta sử dụng các hàm như replace() thì ta dùng tham số này để thay thế hết tất cả các chuổi khớp với điều kiện, ngược lại không sử dụng thì chỉ thay thế cho chuổi đầu tiên khớp với điều kiện. (Nếu bạn đã sử dụng PHP thì khi có tham số /g trong Javascript tương ứng với bên PHP là hàm preg_match_all() còn không có tham số này thì tương ứng là hàm preg_match
    • /i bật chế độ tìm kiếm phân biệt hoa thường.
    • /m bật chế độ tìm kiếm trên nhiều dòng. Mặc định Javascript chỉ tìm kiếm trên một dòng dù dữ liệu ta sử dụng là nhiều dòng.

    Chúng ta có thể viết gọn các tham số này. Thay vì /i/g/m ta có thể sử dụng /igm.

    Một số lưu ý khi khai báo Regular Expression:

    • Không sử dụng \A\Z để tìm ký tự đầu dòng và kết thúc dòng như Perl, chúng ta sử dụng ^$ để thay thế
    • Chưa hổ trợ tìm kiếm ngược đầy đủ, sẽ có bài nói kỹ hơn về vấn đề này. Hổ trợ đầy đủ tìm kiếm thuận
    • Không hổ trợ Unicode, trừ trường hợp ta tìm chính xác từng ký tự theo mã ví dụ như \uFFFF
    • Không hổ trợ điều kiện trong chuỗi "pattern"
    • Không hổ trợ chú thích trong chuỗi "pattern". Để chú thích cho đoạn mẫu của chúng ta hãy sử dụng // ở bên ngoài.

    Chú thích thêm: Khi khai báo bằng cách này thực chất là chúng ta sử dụng cách viết tắt của Javascript. Cách viết này là thay thể cho cụm từ new RegExp() trong Javascript. Ví dụ về việc dùng đầy đủ như sau:

    var test = /pattern/ tương đương với var test = new RegExp("pattern")

    var test = /pattern/modifiers tương đương với var test = new RegExp("pattern", "modifiers")

    Một số hàm xử lý chuỗi sử dụng Regular Expression

    Cách đơn giản nhất là ta sử dụng hàm match() để kiểm tra. Ví dụ: if (myString.match(/regex/)) { /** Tìm thấy chuổi cần tìm **/ }

    Để tìm và thay thế chuổi, ta sử dụng hàm replace() theo cú pháp: myString.replace(/replaceme/g, "replacement"); Chú ý lúc sử dụng hàm này ta nên sử dụng tham số /g để tìm và thay thế đầy đủ hết, tham số thứ 2 của hàm là một chuổi bình thường ta cần thay thế. Để sử dụng lại chính chuỗi ta tìm thấy để sử dụng lại trong lúc thay thế, ta sử dụng các ký tự từ $1 đến $9 để làm, với các con số chính là vị trí được tìm thấy của một cụm từ tương ứng với "pattern" mà ta đã nhập vào theo các điều kiện.

    Cuối cùng, hàm split() cũng hổ trợ Regular Expression. Ví dụ: var myArray = myString.split(/,/);

    Các hàm trong đối tượng Regular Expression

    Khi khai báo một chuổi Regular Expression (Đa số chúng ta dùng cách rút gọn) thì chúng ta đã tạo ra một đối tượng RegExp, với các hàm được định nghĩa như sau:

    test() Hàm này sẽ kiểm tra tham số truyền vào có trùng với chuỗi "pattern" mà ta đã định nghĩa hay không. Hàm trả về giá trị true nếu chuỗi nhập vào có mẫu ta cần tìm và false nếu tìm không thấy.

    exec() Hàm này trả về một mảng chứa các đoạn trùng khớp với "pattern" chúng ta định nghĩa và trả về null nếu không tìm thấy.

    Chúng ta còn có thể sử dụng rút gọn mà không cần khai báo chuổi Regular Expression. Ví dụ: /\d/.test(subject) là cách viết nhanh để kiểm tra xem trong chuỗi subject ta nhập vào có con số nào không.

    Từ khóa đại diện: , ,
    • Điểm chủ đề: 20
Trang 1 trong số 1 (1 nội dung)
Powered by Community Server (Commercial Edition), by Telligent Systems