Các loại biểu thức chính quy trong php là gì?

Biểu thức chính quy rất mạnh mẽ, PHP nhưng chúng không được biết là có thể đọc được và thường xuyên hơn không, việc duy trì biểu thức chính quy không phải là một nhiệm vụ đơn giản

PHP sử dụng PCRE (PCRE2 kể từ PHP 7. 3) hương vị biểu thức chính quy và nó đi kèm với một số tính năng nâng cao có thể giúp viết các biểu thức chính quy dễ đọc, dễ hiểu và dễ duy trì. Các bộ lọc và hàm ctype của PHP cung cấp các xác thực như URL, email và các giá trị chữ và số, giúp không sử dụng biểu thức chính quy ngay từ đầu

Các IDE có thể cung cấp đánh dấu cú pháp đẹp hơn để giúp làm cho một biểu thức chính quy nhất định dễ đọc hơn và dễ nắm bắt hơn, đồng thời cung cấp các bản sửa lỗi nhanh để cải thiện chúng. Tuy nhiên, viết một biểu thức chính quy dễ hiểu và dễ đọc hơn ngay từ đầu có thể hữu ích về lâu dài

Dưới đây là một số mẹo để cải thiện và viết các biểu thức chính quy tốt hơn trong PHP. Lưu ý rằng chúng có thể không hoạt động trong các phiên bản PHP cũ hơn (cũ hơn PHP 7. 3). Ngoài ra, việc sử dụng những cải tiến này cũng có nghĩa là các biểu thức chính quy có thể ít di động hơn đối với các ngôn ngữ khác. Ví dụ: được hỗ trợ ngay cả trong các phiên bản PHP cũ hơn, nhưng trong JavaScript, tính năng chụp có tên chỉ được thêm vào trong ECMAScript 2018



Mỗi và mọi biểu thức chính quy có hai phần. biểu thức và cờ. Cụm từ thông dụng được chứa trong hai ký tự, theo sau là các cờ tùy chọn

Hãy xem xét biểu thức chính quy bên dưới

/(foo|bar)/i

Trong bất kỳ biểu thức chính quy nào, một ký tự phân cách chứa biểu thức, theo sau là các cờ tùy chọn. Trong ví dụ trên,

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
9 là chính biểu thức và
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
0 là cờ/công cụ sửa đổi. Ký tự
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
1 là dấu phân cách

Dấu gạch chéo về phía trước (

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
1) thường được sử dụng làm dấu phân cách, nhưng nó có thể là bất kỳ ký tự nào, chẳng hạn như
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
3,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
4,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
5,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
6,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
7, v.v. Các ký tự chữ và số (A-Z, a-z và 0-9), ký tự nhiều byte (chẳng hạn như Biểu tượng cảm xúc) và dấu gạch chéo ngược (
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
8) không được phép làm dấu phân cách

Ngoài ra, dấu ngoặc nhọn cũng có thể được sử dụng làm dấu phân cách. Cụm từ thông dụng với

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
9,
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
20,
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
21 và
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
22 cũng được chấp nhận và có thể dễ đọc hơn tùy thuộc vào ngữ cảnh

Việc lựa chọn dấu phân cách là quan trọng vì tất cả các lần xuất hiện của ký tự phân cách trong biểu thức phải được thoát. Càng ít ký tự thoát trong một biểu thức chính quy, nó sẽ càng dễ đọc hơn. Không chọn ký tự meta (chẳng hạn như

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
23,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
7, dấu ngoặc nhọn và các ký tự khác mang ý nghĩa đặc biệt trong biểu thức chính quy) có thể làm giảm số lượng ký tự thoát

Mặc dù dấu gạch chéo về phía trước phổ biến như một dấu phân cách biểu thức chính quy, nhưng nó thường không phù hợp với các biểu thức chính quy chứa URI

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
7

Dấu gạch chéo lên (

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
1) là một lựa chọn kém của dấu phân cách trong ví dụ trên vì bản thân biểu thức cũng chứa dấu gạch chéo lên, dấu gạch chéo này hiện phải được thoát ra, dẫn đến một đoạn mã khá khó đọc

Chỉ cần chuyển dấu phân cách từ

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
1 sang
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
6 đã làm cho biểu thức dễ đọc hơn vì nó không còn chứa bất kỳ ký tự thoát nào nữa

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);

Tiến thêm một bước từ , có các cách tiếp cận khác để giảm số lượng ký tự thoát được sử dụng trong biểu thức chính quy

Trong các biểu thức chính quy, một số ký tự meta nhất định không được coi là ký tự meta khi chúng được sử dụng bên trong dấu ngoặc vuông (lớp ký tự). Ví dụ: các ký tự

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
28,
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
29,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
50 và
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
7 (trong số những ký tự khác) mang chức năng đặc biệt trong biểu thức chính quy, nhưng không nằm trong dấu ngoặc vuông

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
2

Trong biểu thức trên, ký tự dấu chấm (

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
28) được thoát bằng dấu gạch chéo ngược (
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
53), nhưng không cần thiết vì ký tự
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
28 không phải là ký tự meta khi nó được sử dụng bên trong dấu ngoặc vuông

Hơn nữa, một số ký tự không cần thoát nếu chúng không thuộc phạm vi

Ví dụ: ký tự gạch ngang (

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
55) biểu thị một phạm vi ký tự nếu nó được sử dụng giữa hai ký tự, nhưng nó không có chức năng đặc biệt nếu nó được sử dụng ở nơi khác. Trong biểu thức chính quy
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
56, ký tự gạch ngang
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
55 được sử dụng để tạo một phạm vi khớp từ
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
58 đến
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
59. Nếu ký tự gạch ngang được thoát (_____ 360), biểu thức chính quy chỉ khớp với các ký tự _______ 258, _______ 259 và
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
55. Thay vì thoát khỏi ký tự gạch ngang (
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
64), chỉ cần di chuyển ký tự gạch ngang đến cuối dấu ngoặc vuông sẽ giảm số lượng ký tự cần thoát;

Việc sử dụng quá nhiều các ký tự thoát không làm cho biểu thức chính quy bị lỗi, nhưng chúng có thể làm giảm đáng kể khả năng đọc

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
5

Có một cờ

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
67, làm lỗi biểu thức chính quy nếu một ký tự không có ý nghĩa đặc biệt nào bị thoát, nhưng nó không phân biệt ngữ cảnh (e. g. đưa ra một lỗi tùy thuộc vào niềng răng, v.v. )

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
6
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
6

Trong biểu thức chính quy, dấu ngoặc nhọn

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
20 bắt đầu một nhóm chụp. Các kết quả phù hợp sẽ được chuyển đến danh sách phù hợp

Xem xét một ví dụ về biểu thức chính quy trích xuất giá từ một văn bản nhất định, từ văn bản

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
69

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
9

Trong đoạn mã trên, có hai nhóm chụp. cái đầu tiên dành cho loại tiền tệ (

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
60), tiếp theo là giá trị số

Biến

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
61 sẽ lưu trữ các kết quả phù hợp từ cả hai nhóm chụp

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
2____170

Trên các biểu thức chính quy hoàn toàn không cần chụp hoặc để giới hạn số lượng kết quả phù hợp được chuyển đến mảng

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
61, một nhóm không chụp có thể giúp ích

Cú pháp của một nhóm không bắt giữ là một dấu ngoặc nhọn bắt đầu bằng

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
63 và kết thúc bằng
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
64. Công cụ Regex xác nhận biểu thức bên trong dấu ngoặc nhọn, nhưng nó không được trả về dưới dạng đối sánh; . e. không bị bắt

Nếu biểu thức trên chỉ quan tâm đến giá trị số, nhóm chụp

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
60 có thể được chuyển thành nhóm không chụp.
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
66

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
71
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
72

Trên các biểu thức chính quy có nhiều nhóm, việc chuyển những nhóm không sử dụng thành các nhóm không bắt giữ có thể giảm lượng dữ liệu được gán cho biến

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
61

PHP8. 2 hỗ trợ công cụ sửa đổi

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
68, làm cho tất cả các nhóm chụp không chụp trừ khi chúng

Xem PHP 8. 2. Hỗ trợ công cụ sửa đổi không bắt giữ (

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
68) trong các hàm
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
90

Tương tự như các nhóm không chụp, các ảnh chụp được đặt tên cho phép chụp một nhóm cụ thể và đặt tên cho nhóm đó. Chúng không chỉ giúp đặt tên cho các giá trị được trả về mà còn đặt tên cho chính các phần của biểu thức chính quy

Sử dụng cùng một ví dụ khớp giá ở trên, một nhóm chụp được đặt tên cho phép đặt tên cho từng nhóm chụp

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
73

Một nhóm chụp được đặt tên có cú pháp là

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
91, theo sau là tên của nhóm và kết thúc bằng
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
64

Trong ví dụ trên,

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
93 là một nhóm chụp được đặt tên có tên
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
94 và
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
95 có tên là
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
96. Các tên cung cấp một chút ngữ cảnh khi đọc biểu thức chính quy, nhưng cũng cung cấp một cách để đặt tên cho các giá trị trong mảng giá trị phù hợp

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
74
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
75

Mảng

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
61 hiện chứa tên và giá trị vị trí của các giá trị phù hợp

Sử dụng các nhóm chụp được đặt tên giúp dễ dàng sử dụng các giá trị

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
61 và dễ dàng thay đổi biểu thức chính quy sau này bằng cách giữ nguyên tên của nhóm chụp

Theo mặc định, các nhóm chụp có tên trùng lặp không được phép và dẫn đến lỗi

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
99. Có thể cho phép rõ ràng các nhóm chụp có tên trùng lặp này với công cụ sửa đổi
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
20

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
76

Với biểu thức chính quy này, có hai nhóm chụp có tên

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
94 và nó được cho phép rõ ràng với cờ
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
20. Khi nó được khớp với một chuỗi, nó sẽ chỉ trả về kết quả khớp cuối cùng cho giá trị chụp được đặt tên, trừ các giá trị vị trí (
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
23,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
24,
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
25,. ) chứa tất cả các trận đấu

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
77
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
78

Một số biểu thức chính quy khá dài và mở rộng thành nhiều dòng

Kết hợp biểu thức chính quy trong khi nhận xét các mẫu phụ hoặc xác nhận riêng lẻ có thể cải thiện khả năng đọc và cung cấp các đầu ra khác biệt nhỏ hơn khi xem xét các xác nhận

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
79

Ngoài ra, các nhận xét có thể được thêm vào bên trong biểu thức chính quy

Có cờ biểu thức chính quy,

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
26, làm cho công cụ bỏ qua tất cả các ký tự khoảng trắng, cho phép biểu thức được trải ra, căn chỉnh hoặc thậm chí chia thành nhiều dòng

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
0

Trong

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
27, công cụ khớp với ký tự khoảng trắng ngay sau chuỗi
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
28, nhưng với cờ
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
26, tất cả khoảng trắng đều bị bỏ qua. Để khớp với khoảng trắng, hãy sử dụng ký tự đặc biệt
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
700

Hơn nữa, với cờ

- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
26, ký tự
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
6 bắt đầu một nhận xét nội tuyến, tương tự như cú pháp nhận xét
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
703 và
- preg_match('/^https:\/\/example\.com\/path/i', $uri);
+ preg_match('#^https://example\.com/path#i', $uri);
6 trong PHP

Với nhiều khoảng cách hơn xung quanh các nhóm mẫu phụ hợp lý, mẫu có thể dễ đọc hơn. Tuy nhiên, cách tiếp cận tốt hơn là chia biểu thức thành nhiều dòng và thêm nhận xét

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
1

Khi lưu trữ trong một biến PHP, sử dụng Heredoc/Nowdoc có thể giữ nguyên định dạng. Kể từ PHP 7. 3, cú pháp heredoc/nowdoc cũng thoải mái hơn

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
2

Biểu thức chính quy hỗ trợ các lớp ký tự và chúng có thể giúp loại bỏ sự xem xét kỹ lưỡng khỏi biểu thức chính quy đồng thời làm cho chúng dễ đọc hơn

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
705 có lẽ là lớp ký tự được sử dụng thường xuyên nhất.
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
705 đại diện cho một chữ số và tương đương với
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
707 (ở chế độ không phải Unicode). Hơn nữa,
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
708 là nghịch đảo của
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
705 và tương đương với
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
710

Biểu thức chính quy tìm kiếm tỉ mỉ các chữ số, theo sau là một chữ số không có thể được đơn giản hóa mà không thay đổi chức năng

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
3

Biểu thức chính quy hỗ trợ một số , điều đó có thể làm cho sự khác biệt nổi bật hơn

  • - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    711 tương đương với
    - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    712.
    - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    4
  • - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    713 là một lớp ký tự được đặt tên phù hợp với tất cả các ký tự thập lục phân và tương đương với
    - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    714

    - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    5
  • - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    700 là một khớp với tất cả các ký tự khoảng trắng và tương đương với
    - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    716

    - /^https:\/\/example\.com\/path/i
    + #^https://example\.com/path#i
    6

Khi sử dụng các biểu thức chính quy có hỗ trợ Unicode (cờ ______1717), nó cho phép thêm một số lớp ký tự. Các lớp ký tự được đặt tên Unicode có mẫu

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
718, trong đó
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
719 là tên của lớp ký tự. Sử dụng chữ hoa
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
720 (e. g.
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
721) là nghịch đảo của lớp ký tự đó

Ví dụ:

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
722 là lớp ký tự được đặt tên cho tất cả các Ký hiệu tiền tệ hiện tại và tương lai. Có một dạng chủ đề dài hơn. g.
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
723) nhưng hiện tại PHP không hỗ trợ chúng

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
7

Các lớp ký tự cho phép bắt/khớp các lớp ngay cả khi không có kiến ​​thức trước về các ký tự. Các ký hiệu tiền tệ mới được giới thiệu trong tương lai sẽ bắt đầu khớp, ngay khi thông tin đó được đưa vào bản cập nhật cơ sở dữ liệu Unicode tiếp theo

Các lớp ký tự Unicode cũng bao gồm một danh sách các lớp tập lệnh rất hữu ích cho tất cả các tập lệnh Unicode. Chẳng hạn,

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
724 đại diện cho tất cả các ký tự từ ngôn ngữ Sinhalese và tương đương với
- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
725

- /^https:\/\/example\.com\/path/i
+ #^https://example\.com/path#i
8

Một phiên bản trước của bài viết này đã nhầm lẫn trong phần các lớp ký tự được đặt tên và có một ví dụ về các lớp ký tự Unicode dạng dài mà PHP không hỗ trợ. Điều này hiện đã được khắc phục, nhờ Bruno Verley (@brnvrl). Cảm ơn Sergey Lebedev và Taoshu, bài viết này cũng có sẵn bằng tiếng Nga và tiếng Trung

Các loại biểu thức chính quy là gì?

Cũng có hai loại biểu thức chính quy. biểu thức chính quy "Cơ bản" và biểu thức chính quy "mở rộng" .

Có biểu thức chính quy nào trong PHP không?

Trong PHP, biểu thức chính quy là các chuỗi bao gồm dấu phân cách, mẫu và từ bổ nghĩa tùy chọn . $exp = "/w3schools/i"; .

Đó là 3 cách sử dụng biểu thức chính quy?

Các biểu thức chính quy được sử dụng trong công cụ tìm kiếm, trong hộp thoại tìm kiếm và thay thế của trình xử lý văn bản và trình soạn thảo văn bản, trong các tiện ích xử lý văn bản như sed và AWK cũng như trong phân tích từ vựng.

Các ví dụ về biểu thức chính quy là gì?

Ví dụ về biểu thức chính quy .
Chỉ đối sánh cụm từ chính xác
Ghép từ hoặc cụm từ trong danh sách
Ghép từ với các cách viết khác nhau hoặc các ký tự đặc biệt
Khớp bất kỳ địa chỉ email nào từ một miền cụ thể
Phù hợp với bất kỳ địa chỉ IP nào trong một phạm vi
Khớp một định dạng chữ và số