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 Show 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
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, 9 là chính biểu thức và 0 là cờ/công cụ sửa đổi. Ký tự 1 là dấu phân cáchDấu gạch chéo về phía trước ( 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ư 3, 4, 5, 6, 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 ( 8) không được phép làm dấu phân cáchNgoà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 9, 20, 21 và 22 cũng được chấp nhận và có thể dễ đọc hơn tùy thuộc vào ngữ cảnhViệ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ư 23, 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átMặ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 7Dấu gạch chéo lên ( 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ó đọcChỉ cần chuyển dấu phân cách từ 1 sang 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
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ự 28, 29, 50 và 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 2Trong biểu thức trên, ký tự dấu chấm ( 28) được thoát bằng dấu gạch chéo ngược ( 53), nhưng không cần thiết vì ký tự 28 không phải là ký tự meta khi nó được sử dụng bên trong dấu ngoặc vuôngHơ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 ( 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 56, ký tự gạch ngang 55 được sử dụng để tạo một phạm vi khớp từ 58 đến 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à 55. Thay vì thoát khỏi ký tự gạch ngang ( 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 5Có một cờ 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. ) 6 6Trong biểu thức chính quy, dấu ngoặc nhọn 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ợpXem 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 69 9Trong đoạn mã trên, có hai nhóm chụp. cái đầu tiên dành cho loại tiền tệ ( 60), tiếp theo là giá trị sốBiến 61 sẽ lưu trữ các kết quả phù hợp từ cả hai nhóm chụp 2____170Trê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 61, một nhóm không chụp có thể giúp íchCú 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 63 và kết thúc bằng 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ắtNếu biểu thức trên chỉ quan tâm đến giá trị số, nhóm chụp 60 có thể được chuyển thành nhóm không chụp. 66 71 72Trê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 61
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 73Một nhóm chụp được đặt tên có cú pháp là 91, theo sau là tên của nhóm và kết thúc bằng 64Trong ví dụ trên, 93 là một nhóm chụp được đặt tên có tên 94 và 95 có tên là 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 74 75Mảng 61 hiện chứa tên và giá trị vị trí của các giá trị phù hợpSử dụng các nhóm chụp được đặt tên giúp dễ dàng sử dụng các giá trị 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ụpTheo 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 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 20 76Với biểu thức chính quy này, có hai nhóm chụp có tên 94 và nó được cho phép rõ ràng với cờ 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í ( 23, 24, 25,. ) chứa tất cả các trận đấu 77 78Mộ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 79Ngoà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, 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 0Trong 27, công cụ khớp với ký tự khoảng trắng ngay sau chuỗi 28, nhưng với cờ 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 700Hơn nữa, với cờ 26, ký tự 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 703 và 6 trong PHPVớ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 1Khi 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 2Biể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 705 có lẽ là lớp ký tự được sử dụng thường xuyên nhất. 705 đại diện cho một chữ số và tương đương với 707 (ở chế độ không phải Unicode). Hơn nữa, 708 là nghịch đảo của 705 và tương đương với 710Biể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 3Biể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
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 718, trong đó 719 là tên của lớp ký tự. Sử dụng chữ hoa 720 (e. g. 721) là nghịch đảo của lớp ký tự đóVí dụ: 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. 723) nhưng hiện tại PHP không hỗ trợ chúng 7Cá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, 724 đại diện cho tất cả các ký tự từ ngôn ngữ Sinhalese và tương đương với 725 8Mộ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ố |