ᲙომპიუტერებიᲞროგრამირების

PHP (regex) - რა არის ეს? მაგალითები და შემოწმების რეგულარული გამოსახულებების

როდესაც ვმუშაობთ ტექსტს ნებისმიერ თანამედროვე პროგრამირების ენა, დეველოპერები მუდმივად შეხვდება მიზნების შეტანის დადასტურება დაცვით სასურველი ნიმუში, ძებნის და შეცვლის ტესტი ფრაგმენტები და სხვა სახის დამუშავების ოპერაციების ხასიათი ინფორმაცია. განავითაროს საკუთარი დადასტურება ალგორითმები იწვევს დაკარგვა დროს, კოდექსი თავსებადობა და სირთულის მისი განვითარება და მოდერნიზაცია.

სწრაფი განვითარება ინტერნეტის და ვებ-დიზაინის languages საჭირო შექმნის მრავალმხრივი და კომპაქტური საშუალებით ტექსტის დამუშავების მინიმალური ოდენობა საჭირო ეს კოდი. ეს არ არის გამონაკლისი და პოპულარულია დამწყები და პროფესიონალი დეველოპერები PHP ენაზე. რეგულარული გამოხატვის ენის, როგორც ტექსტი თარგები გამარტივება ამოცანა გატარება ტექსტი და შეამციროს კოდი ათობით და ასობით ხაზები. ბევრი პრობლემა ვერ მოგვარდება ყველა მის გარეშე.

რეგულარული გამოსახულებების PHP

PHP ენაზე აქვს სამი მექანიზმის მუშაობის რეგულარული გამოსახულებების - «ereg», «mb_ereg» და «preg». ყველაზე გავრცელებული არის ინტერფეისი «preg», რომლის ფუნქცია უზრუნველყოფს ხელმისაწვდომობის ბიბლიოთეკა PCRE რეგულარული გამოხატვის მხარდაჭერა, თავდაპირველად შემუშავებული Perl ენა, რომელიც შედის PHP პაკეტი. Preg ეძებს ფუნქციები მოცემულ ტექსტი შესაბამისი თანახმად, გარკვეული ნიმუში ენაზე რეგულარული გამოსახულებების.

სინტაქსის საფუძვლები

როგორც ნაწილი მოკლე სტატია შეუძლებელია დეტალურად მთელი რეგულარული გამოხატვის სინტაქსი, ამისათვის არსებობს სპეციალური ლიტერატურა. ჩვენ წარმოგიდგენთ მხოლოდ ძირითადი ელემენტები, რათა ნახოთ შესაძლებლობები დეველოპერი და გაიგოს კოდი მაგალითები.

In PHP რეგულარული გამოხატვის ოფიციალურად განისაზღვრება ძალიან რთული და შესაბამისად, გაამარტივებს აღწერილობა. რეგულარული გამოხატვის ტექსტი. იგი შედგება ერთგულ გამყოფი შაბლონი და მოდიფიკატორის მიუთითებს გზა გაუმკლავდეს მას. შესაძლო ჩართვის სხვადასხვა ალტერნატიული და გამეორების ნიმუშები.

მაგალითად, გამოხატვის / \ d {3} - \ d {2} - \ d {2} / მ divider არის "/", რასაც მოჰყვა template, და სიმბოლო «მ» არის მოდიფიკატორის.

ყველა ძალა რეგულარული გამოსახულებების კოდირებით გამოყენებით მეტა-სიმბოლო. მთავარი ენის metacharacter არის წარმატებული - "\". ეს ცვლის ტიპის შემდეგი სიმბოლოების მოპირდაპირე (ie. E. გარდაიქმნება ჩვეულებრივი ხასიათი wildcard და პირიქით). კიდევ ერთი მნიშვნელოვანი metacharacter არის სწორი ხაზი «|», განსაზღვრავს ალტერნატიული template. სხვა მაგალითები მეტა გმირები:

^ დაწყება ობიექტის ან სიმებიანი
( დაწყება subpattern
) End subpattern
{ დაწყება კვანტიფიკატორი
} End კვანტიფიკატორი
\ d ათობითი ციფრი 0-დან 9
\ D ნებისმიერი ხასიათის, რომ ნომერი არ არის
\ s ცარიელი სიმბოლო, სივრცე, tab,
\ w სიმბოლო ლექსიკონი

PHP, დამუშავების რეგულარული გამოსახულებების, სივრცეში განიხილება როგორც ცალკე მოქმედი გმირი, ასე რომ გამოხატვის XYZ და ABC WHERE განსხვავებულია.

subpatterns

In PHP რეგულარული subpatterns ფრჩხილებში, და ისინი უწოდებენ "ქვეგამოსახულებების გამოცნობა". ასრულებს შემდეგ ფუნქციებს:

  1. განაწილების ალტერნატივა. მაგალითად, გათბობის ნიმუში (რაღაც | Bird |) ემთხვევა სიტყვა "სითბო", "ფასკუნჯი" და "ცხელი". და გარეშე ფრჩხილებში ეს იქნება ცარიელი სტრიქონი, "ჩიტი" და "ცხელი".

  2. "სანახაობრივი" subpattern. ეს ნიშნავს, რომ იმ შემთხვევაში, თუ ნიმუში შესაბამისი substring, მაშინ დააბრუნებს ყველა მატჩი. კერძოდ, ჩვენ მისცეს მაგალითი. იმის გათვალისწინებით, რომ შემდეგ რეგულარული გამოსახულებანი: გამარჯვებული მიიღებს ((ოქრო | მოოქროვილი) (მედალი | cup)) - და სიმებიანი მატჩები, "გამარჯვებული იღებს ოქროს მედალი." გარდა იმისა, რომ საწყის ფრაზა, ძიების შედეგები გაიცემა: "ოქროს მედალი", "მედლები", "ოქროს".

ოპერატორები გამეორებას (kvadrifikatory)

შედგენა რეგულარული გამოხატვის ხშირად აუცილებელია ანალიზი განმეორება ციფრები და სიმბოლოები. ეს პრობლემა არ არის, თუ არა ბევრ გამეორებას. მაგრამ რა უნდა გააკეთოს, როდესაც ჩვენ არ ვიცით მათი ზუსტი რაოდენობა? ამ შემთხვევაში აუცილებელია გამოიყენოს სპეციალური metacharacters.

ამისთვის აღწერა გამეორებას გამოიყენება kvadrifikatory - metacharacters მიუთითოთ რაოდენობა. Kvadrifikatory არის ორი სახის:

  • საერთო ფრჩხილები;
  • შემცირდა.

საერთო ჯამში კვანტიფიკატორი შეხებია მინიმალური და მაქსიმალური დასაშვები გამეორებას ელემენტს სახით ორ ნომრები braces, როგორიცაა x {2,5}. თუ დაშვებულ რაოდენობის გამეორებას არ არის ცნობილი, მეორე არგუმენტი არ არის მითითებული: x {2}.

შემოკლებით quantifiers სიმბოლოები ყველაზე გავრცელებული გამეორებას, რათა თავიდან ავიცილოთ ზედმეტი გადატვირთვის სინტაქსი. როგორც წესი, არსებობს სამი შემცირება:

1. * - ნულოვანი ან მეტი გამეორებას, რომელიც უდრის {0,}.

2. + - ერთი ან მეტი გამეორებას, ანუ {1} ...

3.? - ნულოვანი ან მხოლოდ ერთი განმეორებითი - {0,1}.

მაგალითები regex

მათთვის, ვინც ვისწავლოთ რეგულარული გამოსახულებების, მაგალითები - საუკეთესო სახელმძღვანელოს. ჩვენ გაძლევთ რამდენიმე, რომ ნახოთ მათი შესაძლებლობები მინიმალური ძალისხმევით. ყველა კოდი არის სრულად თავსებადი ვერსიები PHP 4.x და ზემოთ. სრულად გაიგოს სინტაქსი და გამოყენების ყველა ენის თვისებები ჩვენ გირჩევთ წიგნი J .. Friedl, "რეგულარული გამოსახულებების", რომელიც სრულად განიხილება სინტაქსი და არსებობს მაგალითები რეგულარული გამოსახულებების არა მხოლოდ PHP, არამედ Python, Perl, MySQL, Java, Ruby და C #.

Validation ელ-ფოსტა

ამოცანა. არსებობს ინტერნეტ გვერდი, რომელიც სტუმარი მოთხოვნილი მისამართი ელ. რეგულარული გამოსახულებანი უნდა შეამოწმოს სისწორის მისამართებზე გაგზავნის შეტყობინებები. Check არ იძლევა გარანტიას, რომ მითითებულ საფოსტო ყუთი რეალურად არსებობს და იღებს შეტყობინებები. მაგრამ გრეჩიხას out აშკარად არასწორი მისამართები მას შეუძლია.

გადაწყვეტილება. როგორც რაიმე პროგრამირების ენის, PHP regex ელ-ფოსტის მისამართზე გადამოწმების შეიძლება განხორციელდეს სხვადასხვა გზები, და მაგალითები ამ მუხლით არ არის საბოლოო და ერთადერთი არჩევანი. აქედან გამომდინარე, ყოველ შემთხვევაში, ჩვენ უნდა უზრუნველყოს მოთხოვნების ჩამონათვალი, რომელიც უნდა გავითვალისწინოთ პროგრამირების და კონკრეტული განხორციელების დამოკიდებულია მთლიანად დეველოპერი.

ამდენად, გამოხატვის, რომელიც შეამოწმებს მოქმედი ელექტრონული ფოსტის, უნდა შეამოწმოს შემდეგი პირობებით:

  1. ყოფნა დაწყებული ხაზი @ სიმბოლო, და არ არსებობს ხარვეზები.
  2. დომენის ნაწილი მისამართი @ სიმბოლო, შეიცავს მხოლოდ მოქმედი გმირები დომენები. იგივე ეხება მომხმარებლის სახელი.
  3. როდესაც შემოწმების სახელი არის საჭირო, რათა დადგინდეს თანდასწრებით სპეციალური სიმბოლოები, როგორიცაა აპოსტროფი ან ვერტიკალური ხაზი. ამგვარი სიმბოლოების პოტენციურად საშიშია და შეიძლება შეიცავს ასეთი სახის თავდასხმები, რომ SQL ინექცია. მოერიდეთ მისამართები.
  4. სახელისა საშუალებას მხოლოდ ერთი წერტილი, რომელიც არ შეიძლება იყოს პირველი ან ბოლო პერსონაჟი სიმებიანი.
  5. დომენური სახელი უნდა შეიცავდეს მინიმუმ ორი და არა უმეტეს ექვსი სიმბოლო.

მაგალითად, იმის გათვალისწინებით, ყველა ამ პირობებში შეიძლება იქნას შემდეგ ფიგურა.

დადასტურება URL

ამოცანა. შეამოწმეთ თუ მითითებული ტექსტი არის სწორი მისამართი URL. კიდევ ერთხელ, ჩვენ აღვნიშნავთ, რომ რეგულარული გამოსახულებების URL შემოწმება შეიძლება განხორციელდეს სხვადასხვა გზები.

გადაწყვეტილება. ჩვენი საბოლოო ვერსია ასეთია:

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

ახლა ანალიზი მისი კომპონენტების უფრო დეტალურად გამოყენებით ნახაზი.

სარჩელის 1 სანამ URL არ უნდა ჰქონდეს გმირები
Claim 2 შეამოწმეთ ყოფნა სავალდებულო პრეფიქსი «http»
მე -3 პუნქტის არ უნდა სიმბოლოები
სარჩელის 4 თუ არსებობს «s», URL ქულა უსაფრთხო კავშირი «https»
სარჩელის 5 საჭირო ნაწილი "//"
სარჩელის 6 სიმბოლოები
გვ. 7-9 დამადასტურებელი პირველი დონის დომენი და ყოფნა წერტილი
p.10-13 დამადასტურებელი domain წერა მეორე დონეზე და წერტილი
p.14-17

ფაილის სტრუქტურა URL - კომპლექტი ციფრები, წერილები, ხაზს უსვამს, dashes, წერტილების და ირიბის დასასრულს

შეამოწმეთ საკრედიტო ბარათის ნომრები

ამოცანა. თქვენ უნდა განახორციელოს დადასტურება შევიდა საკრედიტო ბარათის ნომერი ერთი ყველაზე გავრცელებული გადახდის სისტემები. ვარიანტი მხოლოდ ბარათები Visa და MasterCard.

გადაწყვეტილება. როდესაც შექმნით გამოხატვის თქვენ უნდა გაითვალისწინოს შესაძლო ყოფნა ხარვეზები შეყვანის ოთახი. ციფრები რუკაზე იყოფა ჯგუფები ადვილი მოსმენით და კარნახი. ამიტომ, ბუნებრივია, რომ ადამიანს შეუძლია ცდილობენ შესვლის რიგი ამ გზით (მაგ. E. გამოყენება ფართები).

დაწერეთ უნივერსალური გამოხატულებაა, რომელიც ითვალისწინებს შესაძლო ფართები ან hyphens, უფრო რთული, ვიდრე უბრალოდ გაუქმება ყველა გმირები გარდა ციფრები. აქედან გამომდინარე, ჩვენ გირჩევთ გამოყენებით wildcard გამოხატვის / D, რომელიც შლის ყველა პერსონაჟი გარდა ციფრები.

ახლა თქვენ შეგიძლიათ პირდაპირ გამშვები პუნქტების. ყველა კომპანიები, საკრედიტო ბარათის issuers გამოიყენოს უნიკალური ნომერი ფორმატში. მაგალითში იგი გამოიყენება, და კლიენტს არ უნდა შევიდეს იმ კომპანიის სახელი, - ეს განპირობებულია რიგი. ვიზა ბარათების ყოველთვის იწყება 4 და აქვს სიგრძით 13 ან 16 ციფრი. MasterCard იწყება სპექტრი 51-55 გრძელი ნომერი 16. შედეგად, მივიღებთ შემდეგ გამოსახულებანი:

ადრე დამუშავების მიზნით შეიძლება შემდგომი ტესტირება ბოლო ციფრი ნომერი, რომელიც გამოითვლება Luhn ალგორითმი.

ტელეფონის ნომრის დადასტურება

ამოცანა. შემოწმების სისწორეში შეყვანილი ტელეფონის ნომერი.

გადაწყვეტილება. რაოდენობის ციფრები ფიქსირებული და მობილური ტელეფონის ნომრები განსხვავდება მნიშვნელოვნად დამოკიდებულია ქვეყნის შიგნით, ისე საყოველთაოდ ნახოთ რეგულარული გამოთქმების გამოყენებით, ტელეფონის ნომერი სწორად შეუძლებელია. მაგრამ საერთაშორისო ნომრები მკაცრი ფორმატი და სრულყოფილი შემოწმების ნიმუში. მით უმეტეს, რომ სულ უფრო და უფრო ეროვნული სატელეფონო ოპერატორები ცდილობენ შეხვდება იგივე სტანდარტი. ოთახი სტრუქტურა ასეთია:

+ CCC.NNNNNNNNNNxEEEE, სადაც:

- C - არის ქვეყნის კოდი შედგება 1-3 ციფრები.

- N - მდე 14 ციფრი.

- E - სურვილისამებრ გაფართოება.

Plus არის შეუცვლელი ელემენტია, და ნიშანი X იმყოფება, მხოლოდ საჭიროების გაფართოება.

შედეგად ჩვენ გვაქვს შემდეგი გამოსახულებანი:

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

ნომრები სპექტრი

ამოცანა. ეს აუცილებელია, რათა უზრუნველყოს დამთხვევა რიცხვი გარკვეული დიაპაზონი. გარდა ამისა, აუცილებელია იპოვოს რეგულარული გამოხატვის მხოლოდ ნომრები სპექტრი.

გადაწყვეტილება. აქ არის რამდენიმე გამონათქვამები ზოგიერთი ყველაზე გავრცელებული შემთხვევები:

განსაზღვრა საათი 1 დან 24 ^ (1 [0-2] | [1-9]) $
დღის თვის 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
წამი ან წუთი 0-59 ^ [1-5]? [0-9] $
ნომერი 1 100 * (100 |? [1-9] [0-9]) $
დღეს წლის 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

ძებნა IP მისამართები

ამოცანა. აუცილებელია დადგინდეს, თუ არა მოცემული string არის სწორი IP მისამართი in IPv4 ფორმატი მერყეობს 000.000.000.000-255.255.255.255.

გადაწყვეტილება. როგორც ნებისმიერი პრობლემა ენა PHP, რეგულარული გამოხატვის ბევრი varintov. მაგალითად, ეს:

Online შემოწმების გამონათქვამები

შეამოწმეთ regex სწორად დამწყებთათვის შეიძლება იყოს რთული გამო სირთულის სინტაქსი, რომელიც განსხვავდება "ჩვეულებრივი" პროგრამირების ენები. ამ პრობლემის გადასაჭრელად, არსებობს ბევრი ონლაინ ტესტერები გამონათქვამები, რომ მას ადვილად შეამოწმოთ სისწორის თარგი შექმნილია რეალურ ტექსტი. პროგრამისტი შედის გამოხატვისა და გადამოწმების მონაცემები და მყისიერად ვხედავ შედეგი დამუშავება. როგორც წესი, არ არსებობს მინიშნება სექციაში, რომელშიც დეტალურადაა რეგულარული გამოსახულებების, მაგალითები და განხორციელების განსხვავებები საუკეთესო გაფართოებულ ენებზე.

მაგრამ სრულად ენდობა ონლაინ მომსახურება შედეგები არ არის რეკომენდებული ყველა დეველოპერები, რომლებიც იყენებენ PHP. რეგულარული გამოხატვის დაიწერა და დამოწმებული პირი, ბადებს კვალიფიკაცია და გარანტიას არარსებობის შეცდომები.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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