VBScript - Biểu thức chính quy

Biểu thức chính quy là một chuỗi các ký tự tạo thành một mẫu, chủ yếu được sử dụng để tìm kiếm và thay thế. Mục đích của việc tạo một mẫu là để khớp các chuỗi cụ thể, để nhà phát triển có thể trích xuất các ký tự dựa trên các điều kiện và thay thế các ký tự nhất định.

Đối tượng RegExp

Đối tượng RegExp giúp các nhà phát triển khớp với mẫu chuỗi và các thuộc tính và phương thức giúp chúng ta làm việc với Biểu thức chính quy một cách dễ dàng. Nó tương tự như RegExp trong JavaScript

Tính chất

  • Pattern - Phương thức Pattern biểu thị một chuỗi được sử dụng để xác định biểu thức chính quy và nó phải được đặt trước khi sử dụng đối tượng biểu thức chính quy.

  • IgnoreCase- Thuộc tính Boolean đại diện cho nếu biểu thức chính quy nên được kiểm tra với tất cả các kết quả phù hợp có thể có trong một chuỗi nếu đúng hoặc sai. Nếu không được chỉ định rõ ràng, giá trị Bỏ qua được đặt thành Sai.

  • Global- Thuộc tính Boolean biểu thị nếu biểu thức chính quy cần được kiểm tra với tất cả các kết quả phù hợp có thể có trong một chuỗi. Nếu không được chỉ định rõ ràng, giá trị Toàn cục được đặt thành Sai.

Phương pháp

  • Test(chuỗi tìm kiếm) - Phương thức Kiểm tra nhận một chuỗi làm đối số của nó và trả về True nếu biểu thức chính quy có thể được đối sánh thành công với chuỗi, nếu không thì trả về False.

  • Replace(chuỗi tìm kiếm, chuỗi thay thế) - Phương thức Replace nhận 2 tham số. Nếu tìm kiếm thành công thì nó sẽ thay thế trận đấu đó bằng chuỗi thay thế và chuỗi mới được trả về. Nếu không có kết quả phù hợp nào thì chuỗi tìm kiếm ban đầu được trả về.

  • Execute(chuỗi tìm kiếm) - Phương thức Execute hoạt động giống như Replace, ngoại trừ việc nó trả về một đối tượng bộ sưu tập Matches, chứa một đối tượng Match cho mỗi kết quả phù hợp thành công. Nó không sửa đổi chuỗi gốc.

Đối sánh Đối tượng Bộ sưu tập

Đối tượng bộ sưu tập Matches được trả về là kết quả của phương thức Execute. Đối tượng bộ sưu tập này có thể chứa không hoặc nhiều đối tượng Đối sánh và các thuộc tính của đối tượng này là chỉ đọc.

  • Count - Phương thức Count đại diện cho số lượng đối tượng khớp trong tập hợp.

  • Item - Phương thức Item cho phép truy cập đối tượng khớp từ đối tượng bộ sưu tập trận đấu.

Đối tượng phù hợp

Đối tượng Match được chứa trong đối tượng bộ sưu tập so khớp. Các đối tượng này đại diện cho kết quả khớp thành công sau khi tìm kiếm một chuỗi.

  • FirstIndex- Nó đại diện cho vị trí trong chuỗi ban đầu, nơi trận đấu xảy ra. Chỉ số này dựa trên 0, có nghĩa là vị trí đầu tiên trong một chuỗi là 0.

  • Length - Một giá trị đại diện cho tổng độ dài của chuỗi được so khớp.

  • Value- Giá trị đại diện cho giá trị hoặc văn bản đã so khớp. Nó cũng là giá trị mặc định khi truy cập đối tượng Match.

Tất cả về Tham số mẫu

Việc xây dựng mô hình tương tự như PERL. Xây dựng mẫu là điều quan trọng nhất khi làm việc với Biểu thức chính quy. Trong phần này, chúng ta sẽ đề cập đến cách tạo một mẫu dựa trên các yếu tố khác nhau.

Khớp vị trí

Ý nghĩa của đối sánh vị trí là đảm bảo rằng chúng ta đặt các biểu thức chính quy ở những vị trí chính xác.

Biểu tượng Sự miêu tả
^ Chỉ đối sánh phần đầu của một chuỗi.
$ Chỉ khớp với phần cuối của một chuỗi.
\ b Khớp với bất kỳ ranh giới từ nào
\ B Khớp với bất kỳ ranh giới không phải từ nào

Kết hợp chữ

Bất kỳ dạng ký tự nào như bảng chữ cái, số hoặc ký tự đặc biệt hoặc thậm chí cả hệ thập phân, thập lục phân đều có thể được coi là Chữ viết. Vì một số ký tự đã có ý nghĩa đặc biệt trong ngữ cảnh của Biểu thức chính quy, chúng tôi cần phải thoát khỏi chúng bằng cách sử dụng chuỗi thoát.

Biểu tượng Sự miêu tả
Chữ và số Chỉ đối sánh với các ký tự chữ cái và số.
\ n Khớp với một dòng mới.
\ [ Đối sánh [chỉ theo nghĩa đen
\] Đối sánh] chỉ theo nghĩa đen
\ ( Phù hợp (chỉ theo nghĩa đen
\) Phù hợp) chỉ theo nghĩa đen
\ t Khớp với tab ngang
\ v Khớp với tab dọc
\ | Trận đấu | chỉ theo nghĩa đen
\ { Đối sánh với {chỉ theo nghĩa đen
\} Matches} chỉ theo nghĩa đen
\\ Đối sánh \ chỉ theo nghĩa đen
\? Diêm ? chỉ theo nghĩa đen
\ * Đối sánh * chỉ theo nghĩa đen
\ + Chỉ đối sánh + nghĩa đen
\. Diêm . chỉ theo nghĩa đen
\ b Khớp với bất kỳ ranh giới từ nào
\ B Khớp với bất kỳ ranh giới không phải từ nào
\ f Khớp với nguồn cấp dữ liệu biểu mẫu
\ r Khớp lệnh xuống dòng
\ xxx Khớp ký tự ASCII của số bát phân xxx.
\ xdd Khớp ký tự ASCII của dd số thập lục phân.
\ uxxxx Khớp với ký tự ASCII của xxxx theo nghĩa đen UNICODE.

Phù hợp với các lớp nhân vật

Các lớp ký tự là Mẫu được hình thành bằng cách nhóm tùy chỉnh và được đặt trong dấu ngoặc nhọn []. Nếu chúng ta đang mong đợi một lớp ký tự không nên có trong danh sách, thì chúng ta nên bỏ qua lớp ký tự cụ thể đó bằng cách sử dụng ký hiệu phủ định, đó là một cap ^.

Biểu tượng Sự miêu tả
[XYZ] So khớp bất kỳ lớp ký tự nào trong bộ ký tự.
[^ xyz] Khớp với bất kỳ lớp ký tự nào KHÔNG nằm trong bộ ký tự.
. Đối sánh với bất kỳ lớp ký tự nào ngoại trừ \ n
\ w Ghép bất kỳ lớp ký tự từ nào. Tương đương với [a-zA-Z_0-9]
\ W Khớp với bất kỳ lớp ký tự không phải từ nào. Tương đương với [^ a-zA-Z_0-9]
\ d Phù hợp với bất kỳ lớp chữ số nào. Tương đương với [0-9].
\ D Khớp với bất kỳ lớp ký tự không phải chữ số nào. Tương đương với [^ 0-9].
\S Phù hợp với bất kỳ lớp ký tự khoảng trắng nào. Tương đương với [\ t \ r \ n \ v \ f]
\S Phù hợp với bất kỳ lớp ký tự khoảng trắng nào. Tương đương với [^ \ t \ r \ n \ v \ f]

Đối sánh Lặp lại

Đối sánh lặp lại cho phép nhiều tìm kiếm trong biểu thức chính quy. Nó cũng chỉ định số lần một phần tử được lặp lại trong Biểu thức chính quy.

Biểu tượng Sự miêu tả
* Đối sánh không hoặc nhiều lần xuất hiện của Biểu thức chính quy đã cho. Tương đương với {0,}.
+ Đối sánh một hoặc nhiều lần xuất hiện của Biểu thức chính quy đã cho. Tương đương với {1,}.
? Đối sánh không hoặc một lần xuất hiện của Biểu thức chính quy đã cho. Tương đương với {0,1}.
{x} Khớp chính xác x số lần xuất hiện của biểu thức chính quy đã cho.
{x,} Khớp ít nhất x hoặc nhiều lần xuất hiện của biểu thức chính quy đã cho.
{x, y} So khớp x với y số lần xuất hiện của biểu thức chính quy đã cho.

Luân phiên & Nhóm

Luân phiên và nhóm giúp các nhà phát triển tạo Biểu thức chính quy phức tạp hơn trong việc xử lý đặc biệt các mệnh đề phức tạp trong Biểu thức chính quy, điều này mang lại sự linh hoạt và kiểm soát tuyệt vời.

Biểu tượng Sự miêu tả
0 Nhóm một mệnh đề để tạo một mệnh đề. "(xy)? (z)" khớp với "xyz" hoặc "z".
| Sự thay thế kết hợp một mệnh đề biểu thức chính quy và sau đó khớp với bất kỳ mệnh đề nào trong số các mệnh đề riêng lẻ. "(ij) | (23) | (pq)" khớp với "ij" hoặc "23" hoặc "pq".

Tạo biểu thức chính quy

Dưới đây là một số ví dụ giải thích rõ ràng cách tạo Biểu thức chính quy.

Biểu hiện thông thường Sự miêu tả
"^ \ s * .." và ".. \ s * $" Biểu thị rằng có thể có bất kỳ số lượng ký tự khoảng trắng đầu và cuối trong một dòng.
"((\ $ \ s?) | (# \ s?))?" Đại diện cho một ký hiệu $ hoặc # tùy chọn theo sau là một khoảng trắng tùy chọn.
"((\ d + (\. (\ d \ d)?)?))" Biểu thị rằng có ít nhất một chữ số theo sau là một số thập phân tùy chọn và hai chữ số sau số thập phân.

Thí dụ

Ví dụ dưới đây kiểm tra xem người dùng có nhập một id email có định dạng phù hợp hay không để có một id email theo sau là '@' và sau đó là tên miền.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         strid = "[email protected]"
         Set re = New RegExp
         With re
            .Pattern    = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
            .IgnoreCase = False
            .Global     = False
         End With
        
         ' Test method returns TRUE if a match is found
         If re.Test( strid ) Then
            Document.write(strid & " is a valid e-mail address")
         Else
            Document.write(strid & " is NOT a valid e-mail address")
         End If
        
        Set re = Nothing
      </script>
   </body>
</html>