BilgisayarlarProgramlama

PHP (regex) - bu nedir? Örnekler ve denetleme düzenli ifadeler

Herhangi bir modern programlama dilinde metin ile çalışırken, geliştiriciler sürekli istenilen desen uyum için giriş doğrulama amaçları ile bir araya aramak ve test parçaları ve karakter bilgilerinin işlenmesi operasyonlarının diğer türleri değiştirin. zaman kaybı, gelişimi ve modernizasyonu kod uyumluluğu ve karmaşıklık yol açar kendi doğrulama algoritmaları geliştirin.

Internet ve WEB tasarım dillerinin hızlı gelişimi bu kodu için gerekli minimum miktarda metin işleme yönlü ve kompakt araçlarının oluşturulmasını gerektiriyordu. Bu istisna değildir ve yeni başlayanlar ve PHP dilinin profesyonel geliştiriciler arasında popülerdir. Metin şablon olarak düzenli ifade dili metin işleme görevini basitleştirmek ve onlarca ve çizgilerin yüzlerce kod azaltmak için. Birçok sorun hiç onsuz çözülemez.

PHP'de Düzenli İfadeler

«Ereg», «mb_ereg» ve «emprenye» - PHP dili düzenli ifadeler ile çalışmak için üç mekanizmaları vardır. En yaygın arayüz «emprenye» kimin fonksiyonları başlangıçta PHP paketinde bulunan Perl dili, için geliştirilmiş PCRE düzenli ifade desteği, kitaplığına erişim sağlar olduğunu. Düzenli ifadelerin dilinde belli bir desene göre, belirli bir metin dizesi eşleme fonksiyonları gebelikler arayan.

sözdizimi Temelleri

Kısa bir yazının bir parçası olarak özel bir literatür vardır bunun için, tüm düzenli ifade sözdizimi ayrıntılı olarak tarif etmek mümkün değildir. Biz geliştirici için fırsatları gösterir ve kod örneklerini anlamak için sadece ana unsurları sunuyoruz.

PHP düzenli ifade resmen çok zor tanımlanmış ve bu nedenle açıklama basitleştirmek edilir. Normal bir ifade, metin dizesidir. Bu özel bir ayırıcı şablonu ve idare yolunu gösteren değiştirici oluşur. desen çeşitli alternatifler ve tekrarlar Olası içerme.

Örneğin, ifade / \ d {3} - \ d {2} - \ d {2} / m bölücü şablonu, ardından "/", ve sembol "M" değiştirici.

Düzenli ifadelerin tamamı güç meta karakterleri kodlanmış kullanıyor. "\" - Ana dil meta karakteri ters eğik çizgi olduğunu. Bu üzerinde ters aşağıdaki özelliklere tipini değiştiren (örn., E. sıradan bir karakter Joker ve tersi haline getirilen). «|», Alternatif şablonu belirten bir diğer önemli meta karakter düz bir çizgidir. Meta-karakterlerin fazla örnek:

^ nesneyi veya bir dize başlat
( alt modelin başlat
) bitiş altmodel
{ Başlangıç miktar belirleyici
} bitiş nicelik
\ d 0'dan 9'a kadar ondalık basamak
\ D bir sayı değil herhangi bir karakter
\ s Boş sembol, boşluk, sekme,
\ w sembol sözlüğü

PHP, düzenli ifadeler, ayrı geçerli karakter olarak kabul uzay, çok farklı XYZ ve ABC ifadesi işleme.

alt şablonlar

parantez PHP düzenli alt şablonların olarak, ve bunlar bazen "alt ifadeler" olarak adlandırılır. aşağıdaki işlevleri gerçekleştirir:

  1. Tahsis alternatifleri. Örneğin, ısı deseni (bir şey | Kuş |) "Firebird" ve "sıcak" kelimeleri "ısı" ile örtüşmektedir. Ve parantez olmadan sadece boş bir dize, "kuş" ve "sıcak" olacaktır.

  2. "Muhteşem" altmodel. Bu desen alt dize uyum olursa, o zaman tüm maçları döndüren demektir. Anlaşılır olması için, bir örnek vermek. şu normal ifadeyi göz önüne alındığında: - ve maçlar için dize, "kazanan altın madalya alır." kazanan alır (fincan) (altın | | altın madalya () kaplamalı) İlk ifade ek olarak, arama sonuçları verilecektir: "Altın Madalya", "madalya", "altın".

Operatörler tekrar (kvadrifikatory)

normal ifade derleme olarak sayılar ve simgeler tekrarını analiz etmek çoğu zaman gereklidir. Bu bir sorun olmasa bile tekrar bir sürü değildir. biz onların tam sayısını bilmiyorum Ama ne yapmalı? durumda özel meta kullanmak gereklidir.

sayısını belirtmek için meta - kvadrifikatory kullanılan tekrarlar açıklaması için. Kvadrifikatory iki türlüdür:

  • Parantez içindeki ortak;
  • azaltmıştır.

örneğin, x {2,5} olarak parantez içinde iki sayı formunda izin tekrarlar elemanının minimum ve maksimum sayıda dokunduğu Genel miktar belirleyici. Tekrarların sayısı bilinmiyorsa, ikinci argüman belirtilmemişse: x {2}.

Kısaltılmış nicelik gereksiz aşırı yükleme sözdizimi önlemek için tekrarlar en yaygın olmasını simgeler. Genellikle üç kesim vardır:

1. * - {0}, denk sıfır ya da daha fazla tekrar.

2. + - bir veya daha fazla tekrar yani {1} ...

3.? - sıfır ya da tek bir tekrar - {0,1}.

Örnekler normal ifade

En iyi ders kitabı - düzenli ifadeler, örneklerini öğrenmek isteyenler için. Biz en az bir çaba ile kendi olanaklarını gösteriyor ki birkaç ver. Tüm Yukarıdaki kod PHP 4.x ve sürümleri ile tamamen uyumludur. tam olarak tamamen sözdizimi kabul J .. Friedl, "düzenli ifadeler" tarafından kitap tavsiye tüm dil özelliklerinin sözdizimi ve kullanımı anlamak ve sadece PHP değil, aynı zamanda bir Python, Perl, MySQL, Java, Ruby, ve C # için normal ifadelerin örnekleri vardır belirleyin.

Doğrulama E-posta adresi

Görev. Ziyaretçi adresi e talep edildiği bir internet sayfası vardır. Normal ifade mesajlarını göndermeden önce adreslerinin doğruluğunu kontrol etmeli. Kontrol Belirtilen posta kutusu gerçekte var ve mesajları aldığı garanti etmez. Ama can açıkça yanlış adresler ayıklamak.

Karar. herhangi bir programlama dilinde olduğu gibi PHP'de regex e-posta adresi doğrulama farklı şekillerde uygulanan ve bu makaledeki örneklerde nihai ve tek seçenek değildir edilebilir. Bu nedenle, her durumda, biz programlama ve spesifik uygulama geliştirici tamamen bağlıdır dikkate alınması gereken şartlar listesinin sağlayacaktır.

Böylece, geçerli bir e-posta test ifadesi, aşağıdaki koşulları kontrol etmelidir:

  1. başlangıç varlığı @ sembolü çizgi ve herhangi bir boşluk yoktur.
  2. @ Sembolünün adresin alan bölümü, alan adları için geçerli karakterler içeriyor. Aynı kullanıcı adının için de geçerlidir.
  3. adı kontrol ederken, örneğin bir kesme işareti ya da dikey bir çizgi olarak özel karakterler varlığını belirlemek için gereklidir. Böyle semboller potansiyel olarak tehlikeli olan ve SQL-enjeksiyon, saldırılar böyle türlü içerdiği edilebilir. adresleri kaçının.
  4. adları dizesindeki ilk veya son karakter olmayabilir sadece bir puan, izin verir.
  5. alan adı, en az iki ve en fazla altı karakter içermelidir.

Örnek dikkate tüm bu koşulları alarak şu şekilde görülebilir.

Bir URL Doğrulama

Görev. Belirtilen metin dizesi geçerli olup olmadığını kontrol adres URL'si. Bir kez daha, biz düzenli ifadeler URL denetimi çeşitli şekillerde uygulanabilir olduğunu unutmayın.

Karar. aşağıdaki gibidir nihai sürümü:

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

Şimdi çizim kullanarak daha fazla detayına kadar analiz edin.

istem 1 URL, hiçbir karakter olmamalıdır önce
İddia 2 zorunlu önek varlığını kontrol «http»
madde 3 Hiçbir semboller olmalı
İddia 4 Eğer orada «s», güvenli bir bağlantı URL'nin «https»
İddia 5 Gerekli kısmı "//"
İddia 6 hiçbir karakter
s. 7-9 Doğrulama birinci düzey alanı ve noktasının varlığını
p.10-13 İkinci seviye ve noktayı yazma alanını doğrulama
p.14-17

Dosya yapısı URL - sayılar, harfler alt çizgi, tire, nokta kümesi ve sonunda bir eğik çizgi

kredi kartı numaraları kontrol

Görev. Sen en yaygın ödeme sistemlerinin girilen kredi kartı numarasının doğrulama uygulamak gerekir. Sadece kartları için bir varyant Visa ve MasterCard.

Karar. ifadesini oluştururken giriş odasında dikkate boşluklar olma olasılığını almak gerekir. Harita üzerinde rakam daha kolay okunması ve dikte için gruba ayrılır. Nedenle, bir kişinin (yani. E. boşluk kullanılması) bu şekilde bir sayı girmek için deneyebilirsiniz doğaldır.

dikkate olası boşluk veya tire alır evrensel ifadeyi yazın, basitçe basamak dışında tüm karakterleri atmak daha karmaşıktır. Bu nedenle, basamak dışında tüm karakterleri kaldırır bir joker ifade / D, kullanılması önerilir.

Şimdi çek sayısı ile doğrudan gidebilirsiniz. Tüm şirketler, kredi kartı veren kuruluşlar benzersiz bir numaradır biçimi kullanın. Örnekte kullanıldığı ve müşteri şirket adını girmek gerekmez - bu sayısına göre belirlenir. Visa kartları hep sayılarla 4 ile başlar ve 13 veya 16 basamaklı bir uzunluğa sahiptir. MasterCard Sonuç olarak uzun bir sayı 16 ile 51-55 aralığında başlar, aşağıdaki ifadeyi elde edersiniz:

sipariş işleme önce daha Luhn algoritması hesaplanır numarası, son basamak test edilebilir.

Doğrulama telefon numarası

Görev. girilen telefon numarasının doğruluğunu kontrol ediliyor.

Karar. Sabit ve mobil telefon numaraları basamak sayısı önemli ölçüde böylece evrensel, telefon numarası doğru imkansız düzenli ifadeler kullanarak kontrol ülkeye bağlı olarak değişir. Ama uluslararası numaralar desen kontrol etmek için sıkı bir biçim ve mükemmel var. Daha fazla ve daha ulusal telefon operatörleri aynı standart karşılamak için çalışıyoruz böylece. şöyle Oda yapısı şöyledir:

+ CCC.NNNNNNNNNNxEEEE, burada:

- Cı - 1-3 rakamlardan oluşan ülke kodudur.

- N - 14 basamağa kadar sayısı.

- E - İsteğe bağlı uzantısı.

Artı vazgeçilmez bir unsurdur ve tabelada X uzantısı yalnızca gerektiğinde mevcuttur.

Sonuç olarak şu ifadeyi vardır:

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

aralığındaki sayılar

Görev. Belirli bir aralık tesadüf tamsayıyı sağlamak için gereklidir. Buna ek olarak, normal bir ifade aralığından gelen sayılar bulmak gereklidir.

Karar. En yaygın vakaların bazıları için birkaç ifadeler şunlardır:

1'den 24'e saat belirleyin ^ (1 [0-2] | [1-9]) $
ayda 1-31 Gün ^ (3 [01] | [12] [0-9] | [1-9]) $
Saniye veya dakika 0-59 ^ [1-5]? [0-9] $
1 ila 100 arasında bir sayı * (100 |? [1-9] [0-9]) $
Yılın 1-366 Günü ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Arama IP adresleri

Görev. Verilen dize 000.000.000.000-255.255.255.255 aralığında IPv4 formatında geçerli bir IP adresi olup olmadığını belirlemek için gereklidir.

Karar. PHP dilinde herhangi bir sorun olduğu gibi, düzenli ifade birçok varintov vardır. Örneğin, bu:

ifadelerin Çevrimiçi denetimi

başlayanlar, çünkü "normal" programlama dilleri farklıdır sözdizimi karmaşıklığı, zor olabilir için doğru regex edin. Bu sorunu çözmek için, bu kolay gerçek metinde oluşturulan şablona doğruluğunu kontrol etmek yapmak birçok çevrimiçi test ifadeler vardır. Programcı ekspresyonu ve doğrulama verilerini girer ve anında işlem sonucunu bkz. Genellikle en uzun diller için normal ifadeler, örnekler ve uygulama farklılıkları ayrıntıları referans bölümü, mevcut bulunmaktadır.

Ama tam güven çevrimiçi servislere sonuçları PHP kullanan tüm geliştiriciler için tavsiye edilmez. Normal ifade yazılı ve bizzat doğrulandı, kalifikasyon yükseltir ve hataların olmaması garanti edilir.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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