Máy tínhLập trình

PHP (regex) - đó là những gì? Các ví dụ và kiểm tra biểu thức thông thường

Khi làm việc với văn bản trong bất kỳ ngôn ngữ lập trình hiện đại, các nhà phát triển không ngừng đáp ứng với mục tiêu xác nhận đầu vào cho phù hợp với mô hình mong muốn, tìm kiếm và thay thế những mảnh thử nghiệm và các loại khác của các hoạt động xử lý thông tin nhân vật. Phát triển các thuật toán xác nhận của riêng bạn dẫn đến mất thời gian, khả năng tương thích mã và độ phức tạp trong việc phát triển và hiện đại hóa của nó.

Sự phát triển nhanh chóng của các ngôn ngữ Internet và WEB-thiết kế đòi hỏi sự sáng tạo các phương tiện đa năng và nhỏ gọn xử lý văn bản với một số tiền tối thiểu cần thiết cho mã này. Nó không phải là ngoại lệ và là phổ biến đối với người mới bắt đầu và các nhà phát triển chuyên nghiệp của ngôn ngữ PHP. Ngôn ngữ biểu thức chính quy như các mẫu văn bản để đơn giản hóa các nhiệm vụ xử lý văn bản và giảm mã cho hàng chục và hàng trăm dòng. Nhiều vấn đề không thể được giải quyết ở tất cả mà không có nó.

Regular Expressions trong PHP

ngôn ngữ PHP có ba cơ chế để làm việc với các biểu thức thông thường - «ereg», «mb_ereg» và «preg». Phổ biến nhất là giao diện «preg», có chức năng cung cấp quyền truy cập vào thư viện của sự hỗ trợ biểu thức chính quy PCRE, ban đầu được phát triển cho các ngôn ngữ Perl, được bao gồm trong gói PHP. Preg-tìm kiếm chức năng trong một chuỗi văn bản phù hợp nhất định, theo một khuôn mẫu nhất định trong ngôn ngữ của biểu thức thông thường.

Khái niệm cơ bản cú pháp

Là một phần của một bài viết ngắn thì không thể mô tả một cách chi tiết toàn bộ cú pháp biểu thức chính quy, cho điều này có một nền văn học đặc biệt. Chúng tôi trình bày chỉ là yếu tố chính để hiển thị cơ hội cho nhà phát triển và hiểu các ví dụ mã.

Trong PHP biểu thức chính quy được chính thức định nghĩa rất khó khăn, và do đó đơn giản hóa mô tả. Một biểu thức chính quy là một chuỗi văn bản. Nó bao gồm một mẫu tách chuyên dụng và sửa đổi cho thấy sự cách để xử lý nó. bao gồm khả năng trong các phương án khác nhau và lặp đi lặp lại của các mẫu.

Ví dụ, trong biểu / \ d {3} - \ d {2} - \ d {2} / m dải phân cách "/", tiếp theo là các mẫu, và biểu tượng «m» là sửa đổi.

Tất cả sức mạnh của biểu thức thông thường được mã hóa sử dụng meta-ký tự. Các metacharater ngôn ngữ chính là dấu chéo ngược - "\". Nó thay đổi kiểu ký tự sau vào điều ngược lại (ví dụ. E. Chuyển Đổi thành một ký tự đại diện nhân vật bình thường và ngược lại). Một metacharater quan trọng là một đường thẳng «|», quy định cụ thể mẫu thay thế. Nhiều ví dụ về các meta-nhân vật:

^ Bắt đầu đối tượng hoặc một chuỗi
( Bắt đầu subpattern
) End subpattern
{ Bắt đầu quantifier
} End lượng hóa
\ d chữ số thập phân từ 0 đến 9
\ D bất kỳ nhân vật đó không phải là một số
\ s biểu tượng trống rỗng, không gian, tab,
\ w từ điển biểu tượng

PHP, chế biến biểu thức thông thường, không gian được coi là một nhân vật có giá trị riêng biệt, vì vậy sự biểu hiện của XYZ và ABC Ở ĐÂU là khác nhau.

subpatterns

Trong PHP subpatterns thường xuyên bằng dấu ngoặc đơn, và đôi khi chúng được gọi là "subexpressions". Thực hiện các chức năng sau:

  1. lựa chọn thay thế phân bổ. Ví dụ, hình nhiệt (một cái gì đó | Bird |) trùng với dòng chữ "nhiệt", "Firebird""nóng". Và không có dấu ngoặc nó sẽ chỉ là một chuỗi rỗng, "chim" và "nóng".

  2. "Spectacular" subpattern. Điều này có nghĩa rằng nếu mô hình phù hợp với chuỗi, sau đó trả về tất cả các trận đấu. Để rõ ràng, chúng tôi đưa ra một ví dụ. Căn cứ vào biểu thức chính quy sau: người chiến thắng nhận được ((vàng | mạ vàng) (huy chương | cốc)) - và chuỗi các trận đấu, "người chiến thắng được một huy chương vàng." Ngoài các cụm từ ban đầu, kết quả tìm kiếm sẽ được phát hành: "Huy chương vàng", "huy chương", "vàng".

Các nhà khai thác lặp lại (kvadrifikatory)

Trong biên dịch biểu thức chính quy thường là cần thiết để phân tích sự lặp lại của số và ký hiệu. Đây không phải là một vấn đề, nếu không muốn nói rất nhiều lần lặp lại. Nhưng phải làm gì khi chúng ta không biết con số chính xác của họ? Trong trường hợp này nó là cần thiết để sử dụng metacharacters đặc biệt.

Để có mô tả lần lặp lại sử dụng kvadrifikatory - metacharacters để xác định số lượng. Kvadrifikatory bao gồm hai loại:

  • chung trong ngoặc;
  • giảm.

lượng hóa tổng thể xúc động trước số lượng tối thiểu và tối đa yếu tố lặp đi lặp lại cho phép theo hình thức hai con số trong dấu ngoặc, chẳng hạn như x {2,5}. Nếu số lượng tối đa lặp đi lặp lại không được biết, đối số thứ hai không được xác định: x {2}.

quantifiers viết tắt là biểu tượng cho sự phổ biến nhất của lần lặp lại để tránh cú pháp quá tải không cần thiết. Thông thường có ba vết cắt:

1. * - zero hoặc nhiều lần lặp lại, đó là tương đương với {0,}.

2. + - một hoặc nhiều lần lặp lại, tức là {1} ...

3.? - không hay chỉ có một lặp lại - {0,1}.

Ví dụ regex

Đối với những người học biểu thức thông thường, ví dụ - sách giáo khoa tốt nhất. Chúng tôi đưa ra một vài cho thấy cơ hội của họ với tối thiểu là nỗ lực. Tất cả các mã là hoàn toàn tương thích với các phiên bản của PHP 4.x trở lên. Để hiểu đầy đủ về cú pháp và sử dụng tất cả các tính năng ngôn ngữ chúng tôi khuyên các cuốn sách của J .. Friedl, "biểu thức thông thường", mà hoàn toàn coi cú pháp, và có những ví dụ về các biểu thức thông thường không chỉ PHP, mà còn cho một Python, Perl, MySQL, Java, Ruby, và C #.

Xác Nhận E-mail địa chỉ

Nhiệm vụ. Có một trang Internet mà khách truy cập được yêu cầu địa chỉ email. biểu hiện thường xuyên phải kiểm tra tính chính xác của các địa chỉ trước khi gửi tin nhắn. Kiểm tra không đảm bảo rằng hộp thư quy định thực sự tồn tại và nhận tin nhắn. Nhưng loại bỏ địa chỉ rõ ràng là sai nó có thể.

Quyết định. Như với bất kỳ ngôn ngữ lập trình, trong PHP xác minh email-address regex có thể được thực hiện theo những cách khác nhau, và các ví dụ trong bài viết này không phải là lựa chọn cuối cùng và duy nhất. Vì vậy, trong mỗi trường hợp, chúng tôi sẽ cung cấp một danh sách các yêu cầu mà cần phải được tính đến khi lập trình và thực hiện cụ thể phụ thuộc hoàn toàn vào các nhà phát triển.

Như vậy, khái niệm đó kiểm tra email hợp lệ, nên kiểm tra các điều kiện sau:

  1. Sự hiện diện trong đội hình xuất phát các ký hiệu @, và không có khoảng trống.
  2. Phần miền của địa chỉ của biểu tượng @, chỉ chứa ký tự hợp lệ cho tên miền. Điều tương tự cũng áp dụng đối với tên của người dùng.
  3. Khi kiểm tra tên người dùng là cần thiết để xác định sự hiện diện của các nhân vật đặc biệt như một dấu nháy đơn hoặc đường thẳng đứng. biểu tượng như là nguy hiểm và có thể được chứa trong các loại như các cuộc tấn công SQL-injection. Tránh địa chỉ.
  4. tên người dùng cho phép chỉ có một điểm, trong đó có thể không phải là nhân vật đầu tiên hoặc cuối cùng trong chuỗi.
  5. Tên miền phải chứa ít nhất hai và không quá sáu chữ.

Ví dụ, tính đến tất cả những điều kiện này có thể được nhìn thấy trong hình dưới đây.

Xác nhận của một URL

Nhiệm vụ. Kiểm tra xem chuỗi văn bản quy định là một giá trị địa chỉ URL. Một lần nữa, chúng tôi lưu ý rằng biểu thức thông thường URL kiểm tra có thể được thực hiện theo những cách khác nhau.

Quyết định. Phiên bản cuối cùng của chúng tôi là như sau:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /

Bây giờ phân tích thành phần của nó một cách chi tiết hơn bằng cách sử dụng bản vẽ.

yêu cầu 1 Trước URL không nên có bất kỳ ký tự
điểm 2 Kiểm tra sự hiện diện của tiền tố bắt buộc «http»
mục 3 Có phải là không có những biểu tượng
Yêu cầu 4 Nếu có «s», những điểm URL đến một kết nối bảo mật «https»
yêu cầu bồi thường 5 phần yêu cầu của "//"
yêu cầu bồi thường 6 không ký tự
p. 7-9 Xác minh tên miền cấp cao đầu tiên và sự hiện diện của điểm
p.10-13 Kiểm tra lĩnh vực văn bản cấp độ thứ hai và điểm
p.14-17

URL cấu trúc tập tin - một tập hợp các số, chữ cái, dấu gạch dưới, dấu gạch ngang, dấu chấm, và một dấu gạch chéo ở cuối

Kiểm tra số thẻ tín dụng

Nhiệm vụ. Bạn cần phải thực hiện xác nhận của số thẻ tín dụng được ký của hệ thống thanh toán phổ biến nhất. Một biến thể chỉ cho thẻ Visa và MasterCard.

Quyết định. Khi tạo biểu thức bạn cần để đưa vào tài khoản sự hiện diện có thể có của những khoảng trống trong căn phòng đầu vào. Các chữ số trên bản đồ được chia thành các nhóm để đọc dễ dàng hơn và chính tả. Vì vậy, nó là tự nhiên mà một người có thể cố gắng để nhập số theo cách này (ví dụ. E. Sử dụng dấu cách).

Viết một biểu thức phổ quát mà sẽ đưa vào tài khoản các không gian có thể hoặc có dấu gạch nối, là phức tạp hơn so với chỉ đơn giản là loại bỏ tất cả các nhân vật ngoại trừ chữ số. Vì vậy, chúng tôi khuyên bạn sử dụng một biểu thức đại diện / D, mà loại bỏ tất cả các nhân vật ngoại trừ chữ số.

Bây giờ bạn có thể đi trực tiếp đến số kiểm tra. Tất cả các công ty, tổ chức phát hành thẻ tín dụng sử dụng một định dạng số duy nhất. Trong ví dụ này nó được sử dụng, và khách hàng không cần phải nhập tên của công ty - nó được xác định bởi số. thẻ Visa luôn bắt đầu với những con số 4 và có chiều dài 13 hoặc 16 chữ số. MasterCard bắt đầu trong khoảng từ 51-55 với một số dài 16. Kết quả là, chúng tôi nhận được biểu thức sau đây:

Trước khi xử lý để có thể được tiếp tục thử nghiệm các chữ số cuối cùng của số lượng, được tính toán dựa trên các thuật toán Luhn.

Xác minh số điện thoại

Nhiệm vụ. Kiểm tra tính đúng đắn của số điện thoại vào.

Quyết định. Số lượng các chữ số trong các số điện thoại cố định và di động thay đổi đáng kể tùy thuộc vào quốc gia, do đó phổ biến kiểm tra sử dụng biểu thức thông thường, số điện thoại một cách chính xác không thể. Nhưng số quốc tế có một định dạng nghiêm ngặt và hoàn hảo để kiểm tra mẫu. Thậm chí nhiều hơn như vậy mà các nhà khai thác điện thoại quốc gia ngày càng nhiều đang cố gắng để đáp ứng các tiêu chuẩn tương tự. Cơ cấu phòng như sau:

+ CCC.NNNNNNNNNNxEEEE, trong đó:

- C - là mã quốc gia gồm 1-3 chữ số.

- N - số lên đến 14 chữ số.

- E - phần mở rộng tùy chọn.

Plus là một yếu tố không thể thiếu, và dấu X hiện diện chỉ khi cần thiết mở rộng.

Kết quả là chúng ta có biểu thức sau đây:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:. X +)? $

Các con số trong phạm vi

Nhiệm vụ. Nó là cần thiết để đảm bảo sự trùng hợp nguyên của một phạm vi nhất định. Bên cạnh đó, nó là cần thiết để tìm một biểu thức chính quy chỉ số từ dãy núi này.

Quyết định. Dưới đây là một vài biểu hiện cho một số trường hợp phổ biến nhất:

Xác định giờ 1-24 ^ (1 [0-2] | [1-9]) $
Ngày trong tháng 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Giây hoặc vài phút 0-59 ^ [1-5] [0-9] $
Một số 1-100 * (100 |? [1-9] [0-9]) $
Ngày trong năm 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9]) $

Tìm kiếm địa chỉ IP

Nhiệm vụ. Nó là cần thiết để xác định xem một chuỗi cho trước là một địa chỉ IP hợp lệ trong định dạng IPv4 trong khoảng từ 000.000.000.000-255.255.255.255.

Quyết định. Như với bất kỳ vấn đề bằng ngôn ngữ PHP, biểu thức chính quy có nhiều varintov. Ví dụ, điều này:

kiểm tra trực tuyến của biểu thức

Kiểm tra regex đúng cho người mới bắt đầu có thể khó khăn vì sự phức tạp của cú pháp, mà khác với ngôn ngữ lập trình "bình thường". Để giải quyết vấn đề này, có rất nhiều thử nghiệm trực tuyến biểu hiện mà làm cho nó dễ dàng để kiểm tra tính chính xác của mẫu mà bạn đã tạo trong văn bản thực sự. Các lập trình viên vào sự biểu hiện và kiểm tra dữ liệu và ngay lập tức nhìn thấy kết quả của quá trình xử lý. Thông thường có trình bày một phần tài liệu tham khảo, trong đó mô tả chi tiết biểu thức thông thường, ví dụ và sự khác biệt thực hiện cho các ngôn ngữ mở rộng nhất.

Nhưng với các dịch vụ trực tuyến hoàn toàn tin tưởng kết quả không được khuyến khích cho tất cả các nhà phát triển người sử dụng PHP. Một biểu thức chính quy được viết và kiểm tra trong người, tăng năng lực và đảm bảo không có sai sót.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 vi.unansea.com. Theme powered by WordPress.