JavaScript: Metacharacter

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Metacharacter biểu thức chính quy là các ký tự không đại diện cho chính chúng. Chúng được ban cho các quyền hạn đặc biệt để cho phép bạn kiểm soát mẫu tìm kiếm theo một cách nào đó (ví dụ: chỉ tìm mẫu ở đầu dòng hoặc ở cuối dòng hoặc nếu bắt đầu bằng chữ in hoa hoặc chữ thường, v.v.). Siêu ký tự sẽ mất ý nghĩa đặc biệt của chúng nếu đặt trước nó là dấu gạch chéo ngược (backslash \). Ví dụ, metacharacter chấm đại diện cho bất kỳ ký tự đơn lẻ nào, nhưng khi đặt trước nó dấu gạch chéo ngược thì nó chỉ là dấu chấm thông thường.

Nếu bạn thấy dấu gạch chéo ngược trước metacharacter, dấu gạch chéo ngược sẽ tắt ý nghĩa của metacharacter, nhưng nếu bạn thấy dấu gạch chéo ngược trước ký tự chữ và số trong biểu thức chính quy, thì dấu gạch chéo ngược được sử dụng để tạo ra một metasymbol. Một metasymbol cung cấp một hình thức đơn giản hơn để biểu diễn một số siêu ký tự biểu thức chính quy. Ví dụ: [0-9] đại diện cho các số trong phạm vi từ 0 đến 9 và \d, metasymbol, đại diện cho điều tương tự. [0-9] sử dụng lớp ký tự được đặt trong ngoặc, trong khi \d là một metasymbol (xem Bảng 1).

Ví dụ 1

/^a...c/

GIẢI THÍCH

Biểu thức chính quy này chứa các ký tự đại diện (xem Bảng 1). Cái đầu tiên là một dấu mũ (^). Các metacharacter caret phù hợp với một chuỗi chỉ khi nó ở đầu dòng. Dấu chấm (.) Được sử dụng để khớp với bất kỳ ký tự đơn nào, kể cả khoảng trắng. Biểu thức này chứa ba dấu chấm, đại diện cho ba ký tự bất kỳ. Để tìm một khoảng thời gian theo nghĩa đen hoặc bất kỳ ký tự nào khác không thể hiện chính nó, ký tự đó phải được bắt đầu bằng dấu gạch chéo ngược để ngăn việc giải thích.

Biểu thức ghi: Tìm kiếm ở đầu dòng cho a, theo sau là ba ký tự đơn, theo sau là c. Nó sẽ khớp, ví dụ, abbbc, a123c, ac, aAx3c, v.v., nhưng chỉ khi những mẫu đó được tìm thấy ở đầu dòng.

Bảng 1. Metacharacter và Metasymbol.

Metacharacter / Metasymbol

Giải nghĩa

Lớp ký tự: Ký tự đơn và chữ số

.

Phù hợp với bất kỳ nhân vật nào ngoại trừ dòng mới

[a–z0–9]

Ký tự thường hoặc ký tự số

[^a–z0–9]

Ký tự bất kỳ nhưng không phải ký tự thường hoặc ký tự số

\d

Ký tự số

\D

 Ký tự bất kỳ không phải là số, ứng với [^0-9]

\w

Ứng với [a-zA-Z0-9_]

\W

Ký tự bất kỳ không ứng với [a-zA-Z0-9_]

Lớp ký tự: Ký tự khoảng trắng

\0

Khớp với một ký tự null

\b

Khớp với ký tự xóa lùi (backspace)

\f

formfeed

\n

newline (hay ký tự enter)

\r

Ứng với return

\s

Ứng với ký tự whitespace, space, tab, và newline

\S

Ứng với ký tự không phải whitespace

\t

tab

Lớp ký tự: ký tự neo

^

Bắt đầu mẫu

$

Kết thúc mẫu

\A

Chỉ khớp với phần đầu của chuỗi

\b

Khớp với một ranh giới từ (khi không bên trong [])

\B

Khớp với một ranh giới không phải từ

\G

Khớp với m//g trước đó đã tắt

\Z

Khớp với phần cuối của chuỗi hoặc dòng

\z

Chỉ khớp với phần cuối của chuỗi

Lớp ký tự: Ký tự lặp

X?

Không có hoặc có 1 X

X*

Không có hoặc có nhiều X

X+

Có 1 hoặc nhiều X

(xyz)+

Có 1 hoặc nhiều nhóm xyz

X{m,n}

Có từ m đến n X

Lớp ký tự: Ký tự thay thế

x|y|z

Hoặc x, hoặc y, hoặc z

Lớp ký tự: Ký tự nhớ

(chuỗi)

Được sử dụng cho tham chiếu ngược (xem phần Ghi nhớ hoặc Chụp)

\1 hoặc $1

Khớp các dấu ngoặc đơn đầu tiên

\2 hoặc $2

Khớp bộ dấu ngoặc đơn thứ hai

\3 hoặc $3

Khớp tập hợp dấu ngoặc đơn thứ ba

JavaScript 1.5

(?:x)

Khớp với x nhưng không nhớ. Chúng được gọi là dấu ngoặc đơn không nhớ. Chuỗi con phù hợp không thể được gọi lại từ các phần tử của mảng kết quả [1], ..., [n] hoặc từ các thuộc tính của đối tượng RegExp được xác định trước $1, ..., $9.

x(?=y)

Chỉ khớp với x nếu x được theo sau bởi y. Ví dụ: /Jack (?=Sprat)/ chỉ khớp với Jack nếu được theo sau bởi Sprat. /Jack(?=Sprat | Frost)/ chỉ khớp với Jack nếu được theo sau bởi Sprat hoặc Frost. Tuy nhiên, cả Sprat và Frost đều không phải là một phần của kết quả tương thích.

x(?!y)

Chỉ khớp x nếu x không có y phía sau. Ví dụ: /\d+(?!\.)/ chỉ khớp với một số nếu nó không được theo sau bởi dấu thập phân. /\d+(?!\.)/.exec("3.141") khớp với 141 nhưng không phải 3.141.

Nếu bạn đang tìm kiếm một ký tự cụ thể trong một biểu thức chính quy, bạn có thể sử dụng metacharacter chấm (.) để thể hiện một ký tự hoặc một lớp ký tự khớp với một ký tự từ một bộ ký tự. Ngoài dấu chấm và lớp ký tự, JavaScript đã thêm một số ký hiệu dấu gạch chéo ngược (được gọi là metasymbols) để thể hiện các ký tự đơn. Xem Bảng 2 dưới đây.

Bảng 2. Siêu ký tự một ký tự và một chữ số.

Metacharacter

Giải nghĩa

.

Phù hợp với bất kỳ ký tự nào ngoại trừ newline

[a–z0–9_]

Khớp với bất kỳ ký tự đơn nào trong bộ

[^a–z0–9_]

Khớp với bất kỳ ký tự đơn nào không có trong bộ

» Tiếp: Siêu ký tự chấm
« Trước: Biểu thức chính quy (Regular Expression) là gì?
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!