Alətlər15 dəq oxuma

    Regex Nümunələri İzah Edildi: Ümumi İstifadə Halları və Nümunələr

    Bu əhatəli bələdçi ilə regex-də peşəkar olun. Ümumi regex nümunələrini, real dünya istifadə halllarını və sizi regex ekspertinə çevirəcək praktik nümunələri öyrənin.

    Michael Chen

    Michael Chen

    İnvestisiya Analitiki

    2025 M05 25
    Regex Nümunələri İzah Edildi: Ümumi İstifadə Halları və Nümunələr

    Giriş

    Müntəzəm ifadələr, tez-tez "regex" və ya "regexp" adlanır, developerin alət qutusundakı ən güclü alətlərdən biridir. Onlar inanılmaz dəqiqlik ilə mətn axtarmağa, uyğunlaşdırmağa və manipulyasiya etməyə imkan verir. Ancaq bir çox developerlər regex-i qorxuducu hesab edir, onun şifrəli sintaksisi və görünən sehrli qabiliyyətləri ilə.

    Bu bələdçi müntəzəm ifadələri praktik, real dünya nümunələrinə fokuslanaraq aydınlaşdıracaq. Sonunda siz regex-in necə işlədiyini deyil, həm də nə vaxt və niyə istifadə ediləcəyini başa düşəcəksiniz.

    Müntəzəm İfadələr Nədir?

    Müntəzəm ifadə axtarış nümunəsini təyin edən simvollar ardıcıllığıdır. Bunu yalnız dəqiq sətirləri deyil, mürəkkəb mətn nümunələrini uyğunlaşdıra bilən super-güclü "Tap" funksiyası kimi düşünün.

    Niyə Regex İstifadə Etməli?

    • Nümunə Uyğunluğu: Müəyyən nümunəyə uyğun mətn tapın
    • Validasiya: Məlumat formatlarını yoxlayın (e-mail, telefon nömrələri və s.)
    • Mətn Emalı: Mətni çıxarın, əvəz edin və ya çevirin
    • Axtarış və Əvəzetmə: Mətn toplu şəkildə tapın və dəyişdirin
    • Məlumat Çıxarışı: Struktursuz mətndən xüsusi məlumat çəkin

    Əsas Konsepsiyalar

    Nümunələrə dalmadan əvvəl bu əsas konsepsiyaları başa düşün:

    1. Literal Simvollar: Dəqiq mətni uyğunlaşdırın
    2. Metasimvollar: Mənası olan xüsusi simvollar (., *, +, ?, və s.)
    3. Simvol Sinifləri: Simvol dəstlərini uyğunlaşdırın ([a-z], \d və s.)
    4. Kvantifikatorlar: Neçə dəfə uyğunlaşacağını göstərin (*, +, ?, {n})
    5. Ankorlər: Mövqeləri uyğunlaşdırın (^, $, \b)
    6. Qruplar: Uyğunluqları tutun və təşkil edin ((...))

    Vacib Regex Nümunələri

    1. E-mail Validasiyası

    Ən çox yayılmış regex istifadə hallarından biri:

    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
    

    Parçalanma:

    • ^ - Sətirin başlanğıcı
    • [a-zA-Z0-9._%+-]+ - Bir və ya daha çox əlifba-rəqəm simvolu, nöqtələr, alt xətlər və s.
    • @ - Literal @ simvolu
    • [a-zA-Z0-9.-]+ - Domen adı hissəsi
    • \. - Literal nöqtə (escape edilmiş)
    • [a-zA-Z]{2,} - Üst səviyyəli domen (2+ hərf)
    • $ - Sətirin sonu

    İstifadə:

    const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
    if (emailRegex.test(userEmail)) {
      console.log("Etibarlı e-mail");
    }
    

    2. Telefon Nömrəsi Uyğunluğu

    Müxtəlif telefon nömrəsi formatlarını uyğunlaşdırın:

    ^(\+?1[-.\s]?)?\(?([0-9]{3})\)?[-.\s]?([0-9]{3})[-.\s]?([0-9]{4})$
    

    Uyğunlaşır:

    • (123) 456-7890
    • 123-456-7890
    • 123.456.7890
    • +1 123 456 7890
    • 1234567890

    3. URL Validasiyası

    Veb URL-ləri uyğunlaşdırın:

    ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$
    

    Parçalanma:

    • ^https?:// - Protokol (http və ya https)
    • (www\.)? - İxtiyari www
    • [-a-zA-Z0-9@:%._\+~#=]{1,256} - Domen adı
    • \.[a-zA-Z0-9()]{1,6} - Üst səviyyəli domen
    • \b - Söz sərhədi
    • ([-a-zA-Z0-9()@:%_\+.~#?&//=]*) - İxtiyari yol

    4. Parol Gücü

    Güclü parolları yoxlayın:

    ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
    

    Tələblər:

    • Ən azı bir kiçik hərf
    • Ən azı bir böyük hərf
    • Ən azı bir rəqəm
    • Ən azı bir xüsusi simvol
    • Minimum 8 simvol

    5. Kredit Kartı Nömrələri

    Ümumi kredit kartı formatlarını uyğunlaşdırın:

    ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3[0-9]{13}|6(?:011|5[0-9]{2})[0-9]{12})$
    

    Uyğunlaşır:

    • Visa: 4xxxxxxxxxxxxx
    • MasterCard: 5xxxxxxxxxxxxxx
    • American Express: 34xxxxxxxxxxxxx və ya 37xxxxxxxxxxxxx
    • Discover: 6011xxxxxxxxxxxx

    Ümumi Simvol Sinifləri

    Əvvəlcədən Təyin Edilmiş Siniflər

    \d    # İstənilən rəqəm [0-9]
    \w    # Söz simvolu [a-zA-Z0-9_]
    \s    # Boşluq [ \t\n\r\f\v]
    \D    # Rəqəm olmayan [^0-9]
    \W    # Söz simvolu olmayan [^a-zA-Z0-9_]
    \S    # Boşluq olmayan [^ \t\n\r\f\v]
    

    Xüsusi Simvol Sinifləri

    [aeiou]        # İstənilən sait səsi uyğunlaşdır
    [^aeiou]       # Saitlərdən başqa hər şeyi uyğunlaşdır
    [a-z]          # Kiçik hərfləri uyğunlaşdır
    [A-Z]          # Böyük hərfləri uyğunlaşdır
    [0-9]          # Rəqəmləri uyğunlaşdır
    [a-zA-Z0-9]    # Əlifba-rəqəmi uyğunlaşdır
    [0-9a-fA-F]    # Onaltılıq uyğunlaşdır
    

    Kvantifikatorlar

    Nümunənin neçə dəfə uyğunlaşacağını idarə edin:

    *        # Sıfır və ya daha çox (greedy)
    +        # Bir və ya daha çox (greedy)
    ?        # Sıfır və ya bir (ixtiyari)
    {n}      # Dəqiq n dəfə
    {n,}     # n və ya daha çox dəfə
    {n,m}    # n və m arasında dəfə
    *?       # Sıfır və ya daha çox (lazy)
    +?       # Bir və ya daha çox (lazy)
    

    Nümunələr

    a*       # "", "a", "aa", "aaa", ... uyğunlaşır
    a+       # "a", "aa", "aaa", ... uyğunlaşır ("" yox)
    a?       # "", "a" uyğunlaşır
    a{3}     # Dəqiq "aaa" uyğunlaşır
    a{3,}    # "aaa", "aaaa", "aaaaa", ... uyğunlaşır
    a{3,5}   # "aaa", "aaaa", "aaaaa" uyğunlaşır
    

    Ankorlər və Sərhədlər

    Mövqe Ankorları

    ^        # Sətirin başlanğıcı (və ya çox sətirli rejimdə sətir)
    $        # Sətirin sonu (və ya çox sətirli rejimdə sətir)
    \b       # Söz sərhədi
    \B       # Söz sərhədi olmayan
    \A       # Sətirin başlanğıcı (həmişə)
    \Z       # Sətirin sonu (həmişə)
    

    Nümunələr

    ^Hello      # "Hello" başlanğıcda
    World$      # "World" sonunda
    \bword\b    # Tam söz "word" ("sword" və ya "words" yox)
    

    Qruplar və Tutma

    Tutma Qrupları

    (abc)           # Tutma qrupu
    (?:abc)         # Tutmayan qrup
    (?<name>abc)    # Adlandırılmış tutma qrupu
    

    Nümunələr

    const regex = /(\d{3})-(\d{3})-(\d{4})/;
    const match = "123-456-7890".match(regex);
    // match[0] = "123-456-7890" (tam uyğunluq)
    // match[1] = "123" (birinci qrup)
    // match[2] = "456" (ikinci qrup)
    // match[3] = "7890" (üçüncü qrup)
    

    Lookaheads və Lookbehinds

    Müsbət Lookahead

    (?=pattern)    # Nümunə ilə izlənməlidir
    

    Nümunə: "cat"ı yalnız "s" ilə izlənərsə uyğunlaşdır:

    cat(?=s)       # "cats"da "cat" uyğunlaşır, amma "catch"də yox
    

    Mənfi Lookahead

    (?!pattern)    # Nümunə ilə izlənməMƏLİDİR
    

    Nümunə: "cat"ı yalnız "s" ilə izlənməzsə uyğunlaşdır:

    cat(?!s)       # "catch"də "cat" uyğunlaşır, amma "cats"da yox
    

    Lookbehinds

    (?<=pattern)   # Nümunə ilə əvvəl gəlməlidir
    (?<!pattern)   # Nümunə ilə əvvəl gəlməMƏLİDİR
    

    Real Dünya İstifadə Halları

    1. Form Validasiyası

    // E-mail validasiyası
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(email)) {
      return "Etibarsız e-mail formatı";
    }
    
    // Telefon validasiyası
    const phoneRegex = /^\+?[\d\s\-()]+$/;
    if (!phoneRegex.test(phone)) {
      return "Etibarsız telefon nömrəsi";
    }
    

    2. Mətn Çıxarışı

    // Mətndən bütün e-mail ünvanlarını çıxarın
    const text = "Bizimlə əlaqə: [email protected] və ya [email protected]";
    const emailRegex = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g;
    const emails = text.match(emailRegex);
    // ["[email protected]", "[email protected]"]
    

    3. Mətn Əvəzetməsi

    // Kredit kartı nömrələrini maskala
    const cardNumber = "1234-5678-9012-3456";
    const masked = cardNumber.replace(/\d{4}(?=\d)/g, "****-");
    // "****-****-****-3456"
    

    4. Məlumat Təmizləməsi

    // Əlavə boşluqları silin
    const text = "Salam    dünya    regex-dən";
    const cleaned = text.replace(/\s+/g, " ");
    // "Salam dünya regex-dən"
    
    // Xüsusi simvolları silin
    const dirty = "Salam@Dünya#123!";
    const clean = dirty.replace(/[^a-zA-Z0-9\s]/g, "");
    // "SalamDünya123"
    

    5. URL Parsing

    const urlRegex = /^https?:\/\/([^\/]+)(\/.*)?$/;
    const url = "https://example.com/path/to/page";
    const match = url.match(urlRegex);
    // match[1] = "example.com"
    // match[2] = "/path/to/page"
    

    Ümumi Səhvlər

    Səhv 1: Həddindən Artıq Mürəkkəb Nümunələr

    # PƏHS: Çox mürəkkəb
    ^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
    
    # YAXŞI: Daha sadə və saxlanıla bilən
    ^[^\s@]+@[^\s@]+\.[^\s@]+$
    

    Səhv 2: Xüsusi Simvolları Escape Etməmək

    # PƏHS: Nöqtə istənilən simvolu uyğunlaşdırır
    /example.com/
    
    # YAXŞI: Escape edilmiş nöqtə literal nöqtəni uyğunlaşdırır
    /example\.com/
    

    Səhv 3: Greedy vs Lazy Uyğunlaşma

    # Greedy: Mümkün qədər çox uyğunlaşır
    /<.*>/        # Bütün "<div><p>text</p></div>" uyğunlaşır
    
    # Lazy: Mümkün qədər az uyğunlaşır
    /<.*?>/       # Fərdi teqlər "<div>", "<p>" və s. uyğunlaşır
    

    Performans Məsləhətləri

    1. Bir Dəfə Kompilyasiya Edin: Eyni regex-i təkrar istifadə edirsinizsə, bir dəfə kompilyasiya edin
    2. Ankorlardan İstifadə Edin: ^$ uyğunlaşmanı sürətləndirir
    3. Katastrofik Backtracking-dən Qaçın: İçə-içə kvantifikatorlarla diqqətli olun
    4. Xüsusi Nümunələrdən İstifadə Edin: Daha xüsusi nümunələr daha sürətlidir
    5. Alternativləri Nəzərə Alın: Bəzən string metodları regex-dən daha sürətlidir

    Regex-inizi Test Etmək

    Onlayn Alətlər

    • Regex101: Regex nümunələrini test edin və debug edin
    • Regexr: İnteraktiv regex testi
    • RegEx Pal: Sadə regex test edici

    Ən Yaxşı Təcrübələr

    1. Müxtəlif inputlarla test edin
    2. Kənar halları test edin (boş sətir, xüsusi simvollar)
    3. Etibarsız inputlarla test edin
    4. Nümunələrinizi sənədləşdirin
    5. Mürəkkəb regex-də şərhlər istifadə edin

    Nəticə

    Müntəzəm ifadələr mənimsənildikdə mətn emal qabiliyyətlərinizi dramatik şəkildə yaxşılaşdıra biləcək güclü alətdir. Sadə nümunələrlə başlayın, müntəzəm məşq edin və tədricən daha mürəkkəb ifadələrə keçin.

    Unutmayın: Regex hər problemə həll yox, alətdir. Bəzən sadə string metodları daha uyğundur. Ancaq nümunə uyğunluğu, validasiya və ya mətn çıxarışına ehtiyacınız olduqda, regex çox vaxt ən yaxşı seçimdir.

    Regex-də peşəkar olmağın açarı təcrübədir. Bu bələdçidəki ümumi nümunələrlə başlayın, necə işlədiklərini başa düşün, sonra öz xüsusi ehtiyaclarınıza uyğunlaşdırın.

    Bizim Regex Alətlərimizdən İstifadə

    1tool.dev-da biz müntəzəm ifadələri test etməyə, debug etməyə və başa düşməyə kömək edən güclü Regex Test Edici təklif edirik. Alətimiz real vaxt uyğunlaşma, ətraflı izahatlar və çoxlu regex variantlarını dəstəkləyir.

    Bu gün regex test edicimizi sınayın və regex ekspertinə çevrilə bilərsiniz!

    Michael Chen

    Michael Chen

    İnvestisiya Analitiki

    Şəxsi investisiya strategiyaları və bazar trendlərinə fokuslanmış investisiya analitiki.

    Əlaqəli yazılar

    JSON-u Başa Düşmək: Məlumat Formatlaşdırılması üçün Başlanğıc Bələdçisi
    Alətlər18 dəq oxuma

    JSON-u Başa Düşmək: Məlumat Formatlaşdırılması üçün Başlanğıc Bələdçisi

    Müasir veb inkişafında ən vacib məlumat formatlarından biri olan JSON (JavaScript Object Notation) əsaslarını öyrənin. Bu əhatəli bələdçi əsas sintaksisdən real dünya tətbiqlərə qədər hər şeyi əhatə edir.

    Michael Chen2025 M05 23
    Veb Tərtibatında Base64 Kodlaşdırmasından Necə İstifadə Etmək
    Alətlər16 dəq oxuma

    Veb Tərtibatında Base64 Kodlaşdırmasından Necə İstifadə Etmək

    Veb tərtibatında fundamental texnika olan Base64 kodlaşdırmasına yiyələnin. Şəkillər, data URL-ləri, API ünsiyyəti və daha çoxu üçün nə vaxt və necə istifadə edəcəyinizi öyrənin.

    Michael Chen2025 M05 24
    URL Kodlaşdırma və Dekodlaşdırma: Nə Vaxt və Niyə İstifadə Etməli
    Alətlər14 dəq oxuma

    URL Kodlaşdırma və Dekodlaşdırma: Nə Vaxt və Niyə İstifadə Etməli

    URL kodlaşdırma və dekodlaşdırmasına yiyələnin. URL-ləri nə vaxt kodlaşdırmağı, necə işlədiyini və veb tərtibat və məlumat ötürülməsi üçün niyə vacib olduğunu öyrənin.

    Michael Chen2025 M05 28