• Javascript düzenli ifadeler içermez. Normal ifadelerde hile sayfası. düzenli ifade ile arama () yöntemi

    JavaScript'te normal ifadeler, RegExp nesneleri tarafından temsil edilir. RegExp nesneleri, RegExp() yapıcısı kullanılarak oluşturulabilir, ancak daha sıklıkla özel hazır bilgi sözdizimi kullanılarak oluşturulurlar. Dize sabit değerlerinin tırnak işaretleri içine alınmış karakterler olarak belirtilmesi gibi, normal ifade sabit değerleri de bir eğik çizgi karakteri / / içine alınmış karakterler olarak belirtilir.

    /pattern/flags new RegExp("pattern"[, arama seçenekleri])

    model aranacak normal bir ifadedir (değiştirme hakkında daha sonra bilgi verilecektir) ve bayraklar, g (genel arama), i (büyük/küçük harfe duyarsız) ve m (çok satırlı arama) karakterlerinin herhangi bir birleşiminden oluşan bir dizedir. İlk yöntem sıklıkla kullanılır, ikincisi - bazen. Örneğin, bu tür iki çağrı eşdeğerdir.

    Arama seçenekleri

    Düzenli ifade oluştururken ek arama seçenekleri belirtebiliriz.

    JavaScript normal ifadelerindeki karakterler

    SembolYazışma
    Alfanümerik karakterlerKendilerini eşleştir
    \0 NUL karakteri (\u0000)
    \TSekme (\u0009)
    \NSatır besleme (\u000A)
    \vDikey sekme (\u000B)
    \FSayfa Çevirisi (\u000C)
    \RSatır başı (\u000D)
    \xnnOnaltılı sayı nn ile belirtilen Latin kümesinden bir karakter; örneğin, \x0A, \n ile aynıdır
    \uxxxxOnaltılık xxxx ile belirtilen Unicode karakter; örneğin \u0009, \t ile aynıdır
    \cXKontrol karakteri "X", örneğin, \cJ dizisi, yeni satır karakteri \n ile eşdeğerdir.
    \ Normal karakterler için onları özel kılar. Örneğin, /s/ ifadesi sadece "s" karakterini arar. Ve s'nin önüne \ koyarsanız, /\s/ zaten bir boşluk karakterini belirtir.Tersine, karakter * gibi özelse, \ onu sadece sıradan bir yıldız karakteri yapar. Örneğin, /a*/ 0 veya daha fazla ardışık "a" karakterini arar. "a*" yıldız işaretli bir a bulmak için - özelden önce \ koyun. sembol: /a\*/ .
    ^ Giriş verilerinin başlangıcını gösterir. Çok satırlı arama bayrağı ("m") ayarlanırsa, yeni bir satırın başında da eşleşir. Örneğin /^A/, "an A" içinde "A"yı bulamayacak, ancak ilk " A" içinde "Bir A."
    $ Giriş verilerinin sonunu gösterir. Çok satırlı arama bayrağı ayarlanmışsa, satırın sonunda da eşleşir.Örneğin /t$/, "yiyen"de "t"yi bulamaz, ancak "yemek"te - bulur.
    * 0 veya daha fazla tekrarı belirtir. Örneğin, /bo*/, "Bir hayalet yuhaladı"da "boooo" ve "Bir kuş öttü"de "b"yi bulur, ancak "Bir keçi homurdandı"da hiçbir şey bulamaz.
    + 1 veya daha fazla kez tekrarını belirtir. (1,) ile eşdeğerdir. Örneğin /a+/, "candy"de "a"yı ve "caaaaaaandy"de tüm "a"ları bulacaktır.
    ? Öğenin mevcut olabileceğini veya olmayabileceğini belirtir. Örneğin /e?le?/, "melek"teki "el" ve "açı"daki "le" ile eşleşir. * , + , ? , veya () , daha sonra, tekrar sayısının olduğu varsayılan "açgözlü" modun aksine, "açgözlü olmayan" bir aramayı belirtir (kalıptaki bir sonraki öğeye kadar mümkün olan en az sayıda tekrarlayın). desenin bir sonraki öğesi de eşleşse bile maksimum. , ? (?=) , (?!) ve (?:) altındaki tabloda açıklanan önizlemede kullanılır.
    . (Ondalık nokta) yeni satır dışında herhangi bir karakteri belirtir: \n \r \u2028 veya \u2029. (yeni satırlar dahil herhangi bir karakteri aramak için [\s\S] tuşunu kullanabilirsiniz). Örneğin, /.n/ "hayır, ağaçta bir elma" içinde "an" ve "on" bulur, ancak "nay" bulmaz.
    (X)X'i bulur ve hatırlar. Buna "parantezleri hatırla" denir. Örneğin, /(foo)/, "foo"yu bulup "foo bar"da depolar. Bulunan alt dize, arama sonucu dizisinde veya RegExp nesnesinin önceden tanımlanmış özelliklerinde depolanır: $1, ..., $9 Ayrıca, parantezler, içindekileri tek bir kalıp öğesinde birleştirir. Örneğin, (abc)* - abc 0 veya daha fazla tekrarı.
    (?:X)x'i bulur, ancak ne bulunduğunu hatırlamaz. Buna "hatırlanmayan parantezler" denir. Bulunan alt dize, sonuç dizisinde ve RegExp özelliklerinde saklanmaz.
    x(?=y)x'i yalnızca x'in ardından y geliyorsa bulur. Örneğin, /Jack(?=Sprat)/, "Jack" kelimesini yalnızca ardından "Sprat" geliyorsa bulur. /Jack(?=Sprat|Frost)/ yalnızca "Jack" kelimesini, ardından "Sprat" veya "Frost" geliyorsa bulur. Ancak, arama sonucunda ne "Sprat" ne de "Frost" görüntülenmez.
    x(?!y)x'i yalnızca x'in ardından y gelmediğinde bulur. Örneğin, /\d+(?!\.)/, yalnızca ardından bir ondalık basamak yoksa bir sayıyla eşleşir. /\d+(?!\.)/.exec("3.141") 141'i bulur ama 3.141'i bulamaz.
    x|yx veya y'yi bulur. Örneğin, /yeşil|kırmızı/, "yeşil elma"daki "yeşil" ve "kırmızı elma"daki "kırmızı" ile eşleşir.
    (N)Burada n pozitif bir tam sayıdır. Önceki öğenin tam olarak n tekrarını bulur. Örneğin, /a(2)/, "candy" içinde "a" bulmaz, ancak "caandy" içinde hem a'ları hem de "caaandy" içinde ilk iki a'yı bulur.
    (N,)Burada n pozitif bir tam sayıdır. Bir öğenin n veya daha fazla örneğini bulur. Örneğin, /a(2,) "candy"de "a"yı bulamayacak ama "caandy" ve "caaaaaaandy"de tüm "a"ları bulacaktır.
    (n,m)n ve m pozitif tam sayılardır. Bir elemanın n ila m tekrarını bulun.
    Karakter seti. Listelenen karakterlerden herhangi birini bulur. Kısa çizgi kullanarak bir yayılma belirtebilirsiniz. Örneğin, - ile aynı. "döş" içindeki "b" ve "ache" içindeki "a" ve "c" ile eşleşir.
    [^xyz]Kümede belirtilenler dışında herhangi bir karakter. Ayrıca bir aralık belirtebilirsiniz. Örneğin, [^abc], [^a-c] ile aynıdır. "brisket"teki "r" ve "chop"taki "h" ile eşleşir.
    [\B]Bir geri silme karakteri bulur. (\b ile karıştırılmamalıdır.)
    \BBoşluk gibi bir (Latince) sözcük sınırı bulur. ([\b] ile karıştırılmamalıdır). Örneğin /\bn\w/, "noonday"da "no" ile eşleşir; /\wy\b/, "muhtemelen dün"de "ly" ile eşleşir.
    \BBir kelime sınırını belirtir. Örneğin /\w\Bn/, "öğlen"de "on" ile eşleşir ve /y\B\w/, "muhtemelen dün"de "ye" ile eşleşir.
    \cXBurada X, A'dan Z'ye bir harftir. Bir dizgede bir kontrol karakteri belirtir. Örneğin /\cM/, Ctrl-M karakterini ifade eder.
    \Dherhangi bir alfabeden bir sayı bulur (Unicode'umuz var). Yalnızca normal sayıları bulmak için kullanın. Örneğin /\d/ veya //, "B2 süit numarasıdır" içinde "2"yi bulur.
    \DSayısal olmayan bir karakter (tüm alfabeler) bulur. [^0-9], normal basamakların karşılığıdır. Örneğin /\D/ veya /[^0-9]/, "B2 süit numarasıdır" ifadesindeki "B" ile eşleşir.
    \SBoşluklar, sekmeler, yeni satırlar ve diğer unicode boşluk karakterleri dahil olmak üzere herhangi bir boşluk karakteriyle eşleşir. Örneğin /\s\w*/, "foo bar"da "bar"ı bulacaktır.
    \SBoşluk dışında herhangi bir karakterle eşleşir. Örneğin /\S\w*/, "foo bar"da "foo"yu bulacaktır.
    \vDikey sekme karakteri.
    \wHarfler, sayılar ve alt çizgiler dahil herhangi bir kelime (Latin alfabesi) karakterini bulur. Eşittir . Örneğin /\w/, "elma"da "a"yı, "5,28$"da "5"i ve "3D"de "3"ü bulacaktır.
    \W(Latince) olmayan herhangi bir kelime karakteriyle eşleşir. [^A-Za-z0-9_] ile eşdeğerdir. Örneğin, /\W/ ve /[^$A-Za-z0-9_]/, "%50" içindeki "%" ile eşit olarak eşleşir.

    Javascript'te Normal İfadelerle Çalışmak

    Javascript'te düzenli ifadelerle çalışmak, String sınıfının yöntemleriyle uygulanır.

    exec(regexp) - bir dizgedeki tüm eşleşmeleri (normal kalıp oluşumlarını) bulur. Bir dizi döndürür (eşleşme varsa) ve regexp özelliğini günceller veya hiçbir şey bulunamazsa null değerini günceller. g değiştiricisiyle - bu işlev her çağrıldığında, bir önceki bulunan eşleşmeden sonraki eşleşmeyi döndürür - bu, son aramanın ofset indeksini koruyarak gerçekleştirilir.

    match(regexp) - dizgenin bir kısmını kalıba göre bulun. g değiştiricisi belirtilirse, match() işlevi tüm eşleşmelerin bir dizisini veya null'u (boş bir dizi yerine) döndürür. g değiştiricisi olmadan, bu işlev exec() gibi çalışır;

    test(regexp) - işlev, diziyi kalıba karşı kontrol eder. Eşleşme varsa true, eşleşme yoksa false döndürür.

    split(regexp) - bağımsız değişkeni sınırlayıcı olarak kullanarak, çağrıldığı dizeyi bir alt dizeler dizisine böler.

    replace(regexp, mix) - yöntem, kalıba (normal ifade) göre değiştirilmiş bir dize döndürür. Regexp'in ilk parametresi ayrıca bir normal ifade değil, bir dize içerebilir. g değiştiricisi olmadan, dizgedeki yöntem yalnızca ilk geçtiği yeri değiştirir; g değiştirici ile - genel bir değiştirme gerçekleşir, yani verilen dizideki tüm oluşumlar değiştirilir. mix - değiştirme şablonu, dize, değiştirme şablonu, işlev (işlev adı) değerlerini alabilir.

    Değiştirme dizisindeki özel karakterler

    İşlev aracılığıyla değiştirme

    İkinci parametre olarak bir işlev belirtirseniz, her eşleşmede yürütülür. Bir işlevde, dinamik olarak bir ikame dizesi oluşturabilir ve döndürebilirsiniz. Fonksiyonun ilk parametresi bulunan alt dizgedir. Değiştirilecek ilk bağımsız değişken bir RegExp nesnesiyse, sonraki n parametre parantezli eşleşmeler içerir. Son iki parametre, dizide eşleşmenin gerçekleştiği konum ve dizenin kendisidir.

    Bu makale, Javascript'te normal ifade kullanmanın temellerini kapsıyordu.

    giriiş

    Düzenli ifade nedir?

    Bir JS normal ifadesi, bir arama kuralı oluşturan bir karakter dizisidir. Bu kural daha sonra metni aramak ve değiştirmek için kullanılabilir. Uygulamada, bir normal ifade tek bir karakterden bile oluşabilir, ancak daha karmaşık arama kalıpları daha yaygındır.

    Javascript'te düzenli ifadeler de nesnelerdir. Bunlar, dizelerdeki karakter dizilerini eşleştirmek için kullanılan kalıplardır. RegExp nesnesinin exec() ve test() yöntemlerinde ve String nesnesinin match() , replace() , search ve split() yöntemlerinde kullanılırlar.

    Örnek

    var desen = /örnek/i

    /example/i normal bir ifadedir. örnek bir şablondur ( aramada kullanılacak). i, büyük/küçük harf duyarlılığını gösteren bir değiştiricidir.

    Normal İfade Hazırlama

    JS düzenli ifadeleri, bir model ve bir değiştiriciden oluşur. Sözdizimi şöyle bir şey olacaktır:

    /desen/değiştiriciler;

    Şablon, arama kuralını tanımlar. /abc/ gibi basit karakterlerden veya basit ve özel karakterlerin birleşiminden oluşur: /abc/ veya /Chapter (d+).d/ .

    Şablon tablosu

    Değiştiriciler, sorguları büyük/küçük harfe duyarlı, genel vb. yapmanıza olanak tanır. Genel aramaların yanı sıra büyük/küçük harfe duyarlı aramalar yapmak için kullanılırlar.

    Değiştirici tablo

    Artık JS normal ifadelerini uygulamaya hazırız. Bunu yapmanın iki ana yolu vardır: normal bir ifade nesnesi kullanmak veya bir dizgede normal bir ifade kullanmak.

    Normal İfade Nesnesini Kullanma

    Normal ifade nesnesi oluşturma

    Bu nesne bir karakter şablonunu tanımlar. Desen eşleştirme için kullanılır. Düzenli ifade nesnesi oluşturmanın iki yolu vardır.

    Yöntem 1: Eğik çizgilerle çevrelenmiş bir kalıptan oluşan düzenli bir ifade hazır bilgisi kullanmak, bunun gibi:

    varreg = /ab+c/;

    Normal ifade sabit değerleri, betik ayrıştırıldığında normal ifade ön derlemesini tetikler. Normal ifade sabitse, performansı artırmak için kullanın.

    Yöntem 2: RegExp nesnesinin yapıcı işlevini çağırarak, örneğin:

    varreg = new RegExp("ab+c");

    Yapıcıyı kullanmak, JS normal ifadesini komut dosyası zamanında derlemenizi sağlar. Normal ifade değişecekse veya kalıbı önceden bilmiyorsanız bu yöntemi kullanın. Örneğin, bir arama sorgusu giren bir kullanıcıdan bilgi alırsanız.

    Normal İfade Nesne Yöntemleri

    Düzenli ifade nesnesinin birkaç yaygın yöntemini tanıyalım:

    • derlemek() ( 1.5 sürümünde kullanımdan kaldırıldı) - düzenli bir ifade derler;
    • exec() - Bir dizgede eşleşme gerçekleştirir. İlk eşleşmeyi döndürür;
    • test() - bir dizgede eşleşme gerçekleştirir. true veya false döndürür;
    • toString() - normal ifadenin dize değerini döndürür.

    örnekler

    testi() kullanarak

    test() yöntemi, RegExp nesnesinin normal bir ifadesidir. Bir kalıp dizisini arar ve sonuca göre doğru veya yanlış döndürür. Aşağıdaki JS normal ifade örneği, " karakteri için bir dizenin nasıl arandığını gösterir. e”:

    değişken = /e/; patt.test("Dünyadaki en iyi şeyler bedavadır!");

    Çünkü burada satırda “ e”, bu kodun sonucu true olacaktır.

    Düzenli ifadelerin bir değişkene yerleştirilmesi gerekmez. Aynı sorgu tek satırda yapılabilir:

    /e/.test("Dünyadaki en iyi şeyler bedavadır!");

    exec() kullanma

    Verilen arama kuralına göre dizgiyi arar ve bulunan metni döndürür. Eşleşme bulunamazsa, sonuç null olur.

    Aynı sembol örneğini kullanarak uygulamadaki yönteme bakalım “ e”:

    /e/.exec("Dünyadaki en iyi şeyler bedava!");

    Satır " içerdiğinden e”, bu kodun sonucu .e olacaktır.

    Bir Diziye Normal İfade Uygulamak

    Javascript'te bu ifadeler, String nesnesinde iki yöntemle de kullanılabilir: search() ve replace() . Metinde arama ve değiştirme yapmak için gereklidirler.

    • search() yöntemi - bir eşleşme bulmak için bir ifade kullanır ve eşleşmenin konumu hakkında bilgi verir;
    • replace() yöntemi, değiştirilen şablonla değiştirilmiş bir dize döndürür.

    örnekler

    " Sözcüğü için Büyük/Küçük Harfe Duyarlı Arama Yapmak İçin Bir JS Normal İfadesi Kullanma w3okulları" Çizgide:

    varstr = "W3Schools'u ziyaret edin"; var n = str.search(/w3schools/i);

    n'deki sonuç 6 olacaktır.

    Arama yöntemi ayrıca bağımsız değişken olarak bir dize alır. Dize bağımsız değişkeni normal bir ifadeye dönüştürülecek:

    " kelime öbeğini aramak için dizeyi kullanma W3 okulları" Çizgide.

    Düzenli ifadeler metin satırları içinde esnek aramaya izin verir.

    yaratılış

    var expr = new RegExp(desen [, bayraklar]); // tam gösterim var expr = /pattern/flags; // stenografi gösterim (sabit biçim)

    Seçenekler

    model Arama modeli (normal ifade metni). bayraklar Kalıp arama yöntemleri:
    • G- genel arama (arama şablonuyla tüm eşleşmeler işlenir);
    • Ben- küçük ve büyük harfler arasında ayrım yapmayın;
    • M- çok satırlı arama.
    Bayrakların sırası önemli değil.

    Yorumlar

    Ne zaman Düzenli ifade yeni RegExp(…) yapıcısı kullanılarak oluşturulur, ters eğik çizgilerden (\) kaçılması gerektiğini unutmayın, örneğin:

    Var expr = new RegExp("\\w", "ig");

    Değişmez biçim kullanırken bu gerekli değildir:

    varexpr = /\w/gi;

    Her iki giriş de eşdeğerdir. Dinamik olarak düzenli bir ifade oluşturmanız gerekiyorsa, ilk seçenek gerekli olabilir.

    Normal ifadelerde aşağıdaki karakter türleri ayırt edilir:

    normal karakterler

    Özel semboller

    Normal ifadedeki özel karakterler

    SembolAnlam
    \ Normal karakterler için onları özel kılar. Örneğin, /s/ ifadesi sadece "s" karakterini arar. Ve s'den önce \ koyarsanız, /\s/ zaten bir boşluk karakteri anlamına gelir. Tersine, karakter * gibi özelse, \ onu yalnızca normal bir yıldız karakteri yapar. Örneğin, /a*/ 0 veya daha fazla ardışık "a" karakterini arar. "a*" yıldız işaretli bir a bulmak için - özelden önce \ koyun. sembol: /a\*/ .
    ^ Giriş verilerinin başlangıcını gösterir. Çok satırlı arama bayrağı ("m") ayarlanmışsa, yeni bir satırın başında da etkinleşir. Örneğin /^A/, "an A"da "A"yı bulamayacak, ancak "An A"da ilk "A"yı bulacaktır.
    $ Giriş verilerinin sonunu gösterir. Çok satırlı arama bayrağı ayarlanmışsa, satırın sonunda da çalışacaktır. Örneğin /t$/, "yiyen"de "t"yi bulamaz, ancak "yemek"te - bulur.
    * 0 veya daha fazla tekrarı belirtir. Örneğin, /bo*/, "Bir hayalet yuhaladı"da "boooo" ve "Bir kuş öttü"de "b"yi bulur, ancak "Bir keçi homurdandı"da hiçbir şey bulamaz.
    + 1 veya daha fazla kez tekrarını belirtir. (1,) ile eşdeğerdir. Örneğin /a+/, "candy"de "a"yı ve "caaaaaaandy"de tüm "a"ları bulacaktır.
    ? Öğenin mevcut olabileceğini veya olmayabileceğini belirtir. Örneğin /e?le?/, "melek"teki "el" ve "açı"daki "le" ile eşleşir. * , + , ? , veya () , daha sonra, tekrar sayısının olduğu varsayılan "açgözlü" modun aksine, "açgözlü olmayan" bir aramayı belirtir (kalıptaki en yakın sonraki öğeye kadar mümkün olan en az sayıda tekrarlayın). desenin bir sonraki öğesi de eşleşse bile maksimum. Ayrıca, ? (?=) , (?!) ve (?:) altındaki tabloda açıklanan önizlemede kullanılır.
    . (Ondalık nokta) yeni satır dışında herhangi bir karakteri belirtir: \n \r \u2028 veya \u2029. (yeni satırlar dahil herhangi bir karakteri aramak için [\s\S] tuşunu kullanabilirsiniz). Örneğin, /.n/ "hayır, ağaçta bir elma" içinde "an" ve "on" bulur, ancak "nay" bulmaz.
    (X)X'i bulur ve hatırlar. Buna "parantezleri hatırla" denir. Örneğin, /(foo)/, "foo"yu bulup "foo bar"da depolar. Bulunan alt dize, arama sonucu dizisinde veya RegExp nesnesinin önceden tanımlanmış özelliklerinde depolanır: $1, ..., $9 . Ek olarak, parantezler, içindekileri tek bir desen öğesinde birleştirir. Örneğin, (abc)* - abc 0 veya daha fazla tekrarı.
    (?:X)x'i bulur, ancak ne bulunduğunu hatırlamaz. Buna "hatırlanmayan parantezler" denir. Bulunan alt dize, sonuç dizisinde ve RegExp özelliklerinde saklanmaz. Tüm parantezler gibi, içindekileri tek bir alt modelde birleştirin.
    x(?=y)x'i yalnızca x'in ardından y geliyorsa bulur. Örneğin, /Jack(?=Sprat)/, "Jack" kelimesini yalnızca ardından "Sprat" geliyorsa bulur. /Jack(?=Sprat|Frost)/ yalnızca "Jack" kelimesini, ardından "Sprat" veya "Frost" geliyorsa bulur. Ancak, arama sonucunda ne "Sprat" ne de "Frost" görüntülenmez.
    x (?! y)x'i yalnızca x'in ardından y gelmediğinde bulur. Örneğin, /\d+(?!\.)/, yalnızca ardından bir ondalık basamak yoksa bir sayıyla eşleşir. /\d+(?!\.)/.exec("3.141") 141'i bulur ama 3.141'i bulamaz.
    x | yx veya y'yi bulur. Örneğin, /yeşil|kırmızı/, "yeşil elma"daki "yeşil" ve "kırmızı elma"daki "kırmızı" ile eşleşir.
    (N)Burada n pozitif bir tam sayıdır. Önceki öğenin tam olarak n tekrarını bulur. Örneğin, /a(2)/, "candy" içinde "a" bulmaz, ancak "caandy" içinde hem a'ları hem de "caaandy" içinde ilk iki a'yı bulur.
    (N,)Burada n pozitif bir tam sayıdır. Bir öğenin n veya daha fazla örneğini bulur. Örneğin, /a(2,) "candy"de "a"yı bulamayacak ama "caandy" ve "caaaaaaandy"de tüm "a"ları bulacaktır.
    (n,m)n ve m pozitif tam sayılardır. Bir elemanın n ila m tekrarını bulun.
    Karakter seti. Listelenen karakterlerden herhangi birini bulur. Kısa çizgi kullanarak bir yayılma belirtebilirsiniz. Örneğin, - ile aynı. "döş" içindeki "b" ve "ache" içindeki "c" ile eşleşir.
    [^xyz]Kümede belirtilenler dışında herhangi bir karakter. Ayrıca bir aralık belirtebilirsiniz. Örneğin, [^abc], [^a-c] ile aynıdır. "brisket"teki "r" ve "chop"taki "h" ile eşleşir.
    [\B]Bir geri silme karakteri bulur. (\b ile karıştırılmamalıdır.)
    \BBoşluk gibi bir (Latince) sözcük sınırı bulur. ([\b] ile karıştırılmamalıdır). Örneğin /\bn\w/, "noonday"da "no" ile eşleşir; /\wy\b/, "muhtemelen dün"de "ly" ile eşleşir.
    \BBir kelime sınırını belirtir. Örneğin /\w\Bn/, "öğlen"de "on" ile eşleşir ve /y\B\w/, "muhtemelen dün"de "ye" ile eşleşir.
    \cXBurada X, A'dan Z'ye bir harftir. Bir dizgede bir kontrol karakteri belirtir. Örneğin /\cM/, Ctrl-M karakterini ifade eder.
    \Dherhangi bir alfabeden bir sayı bulur (Unicode'umuz var). Yalnızca normal sayıları bulmak için kullanın. Örneğin /\d/ veya //, "B2 süit numarasıdır" içinde "2"yi bulur.
    \DSayısal olmayan bir karakter (tüm alfabeler) bulur. [^0-9], normal basamakların karşılığıdır. Örneğin /\D/ veya /[^0-9]/, "B2 süit numarasıdır" ifadesindeki "B" ile eşleşir.
    \f,\r,\nEşleşen özel karakterler form-besleme, satır-besleme, yeni satır.
    \SBoşluklar, sekmeler, yeni satırlar ve diğer unicode boşluk karakterleri dahil olmak üzere herhangi bir boşluk karakteriyle eşleşir. Örneğin /\s\w*/, "foo bar"da "bar"ı bulacaktır.
    \SBoşluk dışında herhangi bir karakterle eşleşir. Örneğin /\S\w*/, "foo bar"da "foo"yu bulacaktır.
    \TSekme karakteri.
    \vDikey sekme karakteri.
    \wHarfler, sayılar ve alt çizgiler dahil herhangi bir kelime (Latin alfabesi) karakterini bulur. Eşittir . Örneğin /\w/, "elma"da "a"yı, "5,28$"da "5"i ve "3D"de "3"ü bulacaktır.
    \W(Latince) olmayan herhangi bir kelime karakteriyle eşleşir. [^A-Za-z0-9_] ile eşdeğerdir. Örneğin, /\W/ ve /[^$A-Za-z0-9_]/, "%50" içindeki "%" ile eşit olarak eşleşir.
    \Nburada n bir tamsayıdır. Parantez içinde saklanan n'inci alt dizeye geri başvuru. Örneğin, /apple(,)\orange\1/, "elma, portakal, kiraz, şeftali" içindeki "elma, portakal" ile eşleşir. Tablonun arkasında daha eksiksiz bir örnek var.
    \0 NUL karakterini bulur. Sona başka numaralar eklemeyin.
    \xhhhh kodlu karakteri bulun (2 onaltılık basamak)
    \uhhhhhhhh (4 onaltılık basamak) kodlu karakteri bulur.

    Dize biçimini değiştirme örneği

    Var yeniden = /(\w+)\s(\w+)/; var str = "John Smith"; var newstr = str.replace(yeniden, "$2, $1"); uyarı(newstr); // "Smith, John"

    Özellikler

    Yöntemler

    String parametresinde bir eşleşme gerçekleştirir.
    Dize parametresinde bir eşleşme olup olmadığını test eder.

    String nesnesinin yöntemlerinin yanı sıra

    kibritBir dizide eşleşme arar. Bir bilgi dizisi veya eşleşme yoksa null döndürür.
    aramakBir dizideki eşleşmeleri test eder. Eşleşmenin dizinini veya arama başarısız olursa -1'i döndürür.
    yer değiştirmekBir dizede eşleşme arar ve bulunan alt dizeleri yeni bir alt dizeyle değiştirir.
    bölmekBir dizeyi bir alt dizeler dizisine bölmek için normal bir ifade veya sabit bir dize kullanır.

    küresel

    bayrak mı" G" düzenli bir ifadede.

    Sözdizimi

    normal ifade.global

    küresel

    Anlam küresel bayrak " ise doğru olacaktır GG

    //Rastgele bir düzenli ifade tanımlayın var regexp = /Örnek örnek/g; /* Normal ifade g değiştirici içeriyorsa, "G değiştirici ayarlandı" yazdırın, aksi takdirde "G değiştirici ayarlanmadı" yazdırın */ if (regexp.global) alert("G değiştirici ayarlandı"); else alert("G değiştirici ayarlanmadı");

    yoksay vakası

    bayrak mı" Ben" düzenli bir ifadede.

    Sözdizimi

    regexp.ignoreCase

    Açıklama, yorumlar, örnekler

    yoksay vakası tek bir normal ifade nesnesinin özelliğidir.

    Bu özelliği açıkça değiştiremezsiniz.

    Anlam yoksay vakası bayrak " ise doğru olacaktır Ben" kullanılmış; aksi takdirde yanlış . Bayrak " Ben", dizgede eşleşmeler aranırken büyük/küçük harf durumunun dikkate alınmaması gerektiğini belirtir.

    //Rastgele bir düzenli ifade tanımlayın var regexp = /Örnek örnek/i; /* Normal ifade i değiştiricisini içeriyorsa, "Değiştirici i ayarlandı" yazdırın, aksi takdirde "Değiştirici i ayarlanmadı" yazdırın */ if (regexp.ignoreCase) alert("Değiştirici i ayarlandı"); else alert("Değiştirici i ayarlanmadı");

    son dizin

    Mülk son dizin sonraki aramanın başlayacağı konumu belirtir.

    Sözdizimi

    regexp.lastIndex

    Yorumlar

    Bu özellik, yalnızca değiştirici normal ifadede ayarlanmışsa çalışır G.

    Bu özellik, veya yöntemi kullanılarak bulunan son karakterin konumunu gösteren bir tamsayı döndürür.

    Örnek

    //Rastgele bir düzenli ifade tanımlayın var str = "I am a short string"; //Normal ifadeyi ayarla var regexp = /o/g; //Metin dizesinde "o" için genel bir arama yapın ve // ​​(regexp.test(str)==true) ( ​​​alert(regexp.lastIndex); ) sırasında bulunan her eşleşmeden sonra konumu görüntüleyin.

    çok satırlı

    bayrak mı" M" düzenli bir ifadede.

    Sözdizimi

    normal ifade.global

    Açıklama, yorumlar, örnekler

    çok satırlı tek bir normal ifade nesnesinin özelliğidir.

    Bu özelliği açıkça değiştiremezsiniz.

    Anlam çok satırlı bayrak " ise doğru olacaktır G" kullanılmış; aksi takdirde yanlış . Bayrak " G", normal ifadenin dizgedeki tüm olası eşleşmelere karşı kontrol edilmesi gerektiğini belirtir.

    //Rastgele bir düzenli ifade tanımlayın var regexp = /Örnek örnek/m; /* Normal ifade g değiştiricisini içeriyorsa, print "g değiştiricisi ayarlandı", aksi takdirde print "g değiştiricisi ayarlanmadı" */ if (regexp.multiline) alert("m değiştiricisi ayarlandı"); else alert("G değiştirici ayarlanmadı");

    kaynak

    Mülk kaynak düzenli ifade modelinin içeriğini döndürür

    Düzenli ifadeler metakarakterlere dayalı dize kalıplarını açıklayan bir dildir. Bir metakarakter, bir dizgenin bazı karakter sınıflarını tanımlayan, bir alt dizginin konumunu, yineleme sayısını belirten veya karakterleri bir alt dizgide gruplandıran, normal ifadedeki bir karakterdir. Örneğin, \d metakarakteri sayıları tanımlar ve $ bir satırın sonunu belirtir. Normal ifadeler, kendilerini tanımlayan normal karakterler de içerebilir. Normal ifadelerdeki meta karakterlerin kümesi ve anlamı, özelliklerinin çoğu JS'de desteklenen PCRE standardı tarafından açıklanır.

    Normal ifadelerin kapsamı

    Normal ifadeler genellikle aşağıdaki görevler için kullanılır:

    • haritalama. Bu görevin amacı, belirli bir metnin belirli bir normal ifadeyle eşleşip eşleşmediğini bulmak olacaktır.
    • Aramak. Düzenli ifadeleri kullanarak, bunlarla eşleşen alt dizeleri bulmak ve bunları metinden çıkarmak uygundur.
    • Yenisiyle değiştirme. Normal ifadeler genellikle metinde normal ifadeyle eşleşen bir alt dizeyi yalnızca bulmaya değil, aynı zamanda değiştirmeye de yardımcı olur.

    Son olarak, normal ifadeleri kullanarak şunları yapabilirsiniz, örneğin:

    • Formdaki kullanıcı verilerini doldurmanın doğruluğunu kontrol edin.
    • Daha sonra mesaja otomatik olarak eklenmesi için, kullanıcı tarafından girilen metindeki görüntünün bağlantısını bulun.
    • Metinden html etiketlerini kaldırın.
    • Basit sözdizimi hataları için derlemeden önce kodu kontrol edin.

    JS'deki düzenli ifadelerin özellikleri. Normal ifade değişmezleri

    JS'deki düzenli ifadelerin ana özelliği, onlar için ayrı bir hazır bilgi türü olmasıdır. Dize sabit değerlerinin tırnak içine alınması gibi, normal ifade sabit değerleri de eğik çizgiler (/) ile çevrilidir. Böylece, JS kodu aşağıdaki gibi ifadeler içerebilir:

    console.log(typeof /tcoder/); // nesne

    Aslında, dizede tanımlanan normal ifade

    var pattern = new RegExp("tcoder");

    Bu oluşturma yöntemi genellikle değişkenleri bir normal ifadede kullanmanız veya dinamik olarak bir normal ifade oluşturmanız gerektiğinde kullanılır. Diğer tüm durumlarda, daha kısa sözdizimi ve ek olarak bazı karakterlerden kaçış ihtiyacının olmaması nedeniyle düzenli ifade sabit değerleri kullanılır.

    Normal ifadelerdeki karakterler

    Normal ifadelerdeki tüm alfasayısal karakterler meta karakter değildir ve kendilerini tanımlar. Bu, normal ifadenin şu anlama gelir: /kodlayıcı/ alt dize tcoder ile eşleşecek. Normal ifadeler, yeni satırlar (\n), sekmeler (\t) vb. gibi alfabetik olmayan karakterler de içerebilir. Tüm bu semboller de kendilerine karşılık gelir. Bir alfabetik karakterin önüne ters eğik çizgi (\) konması, varsa onu bir meta karakter yapar. Örneğin, "d" alfabetik karakteri, önünde eğik çizgi (\d) varsa, sayıları açıklayan bir meta karakter haline gelir.

    Karakter sınıfları

    Normal ifadelerdeki tek karakterler, köşeli parantezler kullanılarak sınıflara ayrılabilir. Bu şekilde oluşturulan sınıf, içinde yer alan sembollerden herhangi birine karşılık gelir. Örneğin, normal ifade // "t", "c", "o", "d", "e", "r" harfleriyle eşleşir.

    Sınıflarda ayrıca kısa çizgi kullanarak bir karakter aralığı belirleyebilirsiniz. Örneğin, bir sınıf, sınıfa karşılık gelir. Normal ifadelerdeki bazı meta karakterlerin zaten karakter sınıflarını tanımladığını unutmayın. Örneğin, \d metakarakteri, sınıfa eşdeğerdir. Karakter sınıflarını tanımlayan meta karakterlerin de sınıflara dahil edilebileceğini unutmayın. Örneğin, [\da-f] sınıfı "a", "b", "d", "e", "f" sayılarına ve harflerine, yani herhangi bir onaltılık karaktere karşılık gelir.

    İçinde yer almaması gereken karakterleri belirterek bir karakter sınıfını tanımlamak da mümkündür. Bu, ^ meta karakteri kullanılarak yapılır. Örneğin, [^\d] sınıfı, sayı dışındaki herhangi bir karakterle eşleşir.

    tekrarlar

    Şimdi, herhangi bir uzunluktaki bir ondalık sayıyı, bu sayıdaki basamak sayısı kadar \d metakarakteri arka arkaya yazarak tanımlayabiliriz. Bu yaklaşımın pek uygun olmadığını kabul edin. Ek olarak, gerekli tekrar sayısının aralığını tanımlayamayız. Örneğin, bir veya iki basamaklı bir sayıyı tarif edemeyiz. Neyse ki, normal ifadelerde, tekrar aralıklarını metakarakterler kullanarak tanımlamak mümkündür. Bunu yapmak için, karakterden sonra tekrar aralığını süslü parantez içinde belirtmeniz yeterlidir. Örneğin, normal ifade /tco(1, 3)der/"tcoder", "tcooder" ve "tcoooder" dizeleriyle eşleşir. Bir virgül ve minimum tekrar sayısını bırakarak maksimum tekrar sayısını atlarsanız, belirtilenden daha fazla tekrar sayısını belirtebilirsiniz. Örneğin, normal ifade /bo(2,)bs/"boobs", "booobs", "boooobs" vb. dizelerini ikiden büyük veya ikiye eşit herhangi bir sayıda "o" ile eşleştirir.

    Kıvrımlı parantez içindeki virgülü atlarsanız, yalnızca bir sayı belirterek, tam tekrar sayısını gösterir. Örneğin, normal ifade /\d(5)/ beş basamaklı sayılara karşılık gelir.

    Bazı tekrar aralıkları oldukça sık kullanılır ve kendi atamaları için kendi meta karakterlerine sahiptir.

    açgözlü tekrarlar

    Yukarıdaki sözdizimi, maksimum tekrar sayısını açıklar, yani, sayısı belirtilen aralıkta bulunan tüm olası tekrar sayısından maksimum seçilir. Bu tür tekrarlara açgözlü denir. Bu, "+" metakarakteri bir veya daha fazla yinelemeyi açıklasa bile, yes!!111 dizesindeki /\d+/ normal ifadesinin "111" alt dizesiyle eşleşeceği ve "11" veya "1" ile eşleşmeyeceği anlamına gelir.

    Açgözlü olmayan tekrarı uygulamak istiyorsanız, yani belirtilen aralıktan mümkün olan minimum tekrar sayısını seçin, ardından "?" tekrar aralığından sonra. Örneğin, normal ifade /\d+?/"yeah!!111" dizesindeki "1" alt dizesiyle ve normal ifadeyle eşleşir /\d(2,)/"11" alt dizisi aynı satırda eşleşir.

    Açgözlü olmayan tekrarın önemli bir özelliğine dikkat etmeye değer. Normal ifadeyi düşünün /bo(2,)?bs/. "Büyük memeleri severim" dizesinde, açgözlü tekrarda olduğu gibi, sandığınız gibi memeler değil, memeler alt dizesi eşleşecektir. Gerçek şu ki, normal bir ifade, dizinin farklı yerlerinde bulunan birkaç alt dizeyi tek bir karşılaştırmada eşleştiremez. Yani, normal ifademiz bir satıra yapıştırılmış "boo" ve "bs" alt dizileriyle eşleşemez.

    alternatifler

    Normal ifadelerde, normal ifadenin bir bölümüyle veya diğer bölümüyle eşleşen bir dizi diziyi açıklamak için - alternatiflerini de kullanabilirsiniz. Bu tür parçalara alternatif denir ve dikey bir çubukla ayrılır. Örneğin, normal ifade /iki|iki|\2/"two" alt dizisi veya "twice" alt dizisi veya "2" alt dizisi ile eşleşebilir. Alternatifler zinciri ilk eşleşmeye kadar soldan sağa doğru işlenir ve yalnızca bir alternatifi tanımlayan bir alt dizi onunla eşleşebilir. Örneğin, normal ifade /java|komut dosyası/"javascript'i seviyorum" dizesinde yalnızca "java" alt dizisi eşleşir.

    gruplamalar

    Tekrar aralıkları, karakter sınıfları vb. kullanılırken birden çok karakteri tek bir varlık olarak ele almak, bunları parantez içine almak kadar basittir. Örneğin, normal ifade /true(kodlayıcı)?/"truecoder" ve "true" dizeleriyle eşleşir.

    Bağlantılar

    Parantezlerin normal bir ifadedeki karakterleri tek bir bütün halinde birleştirmelerine ek olarak, bunlara karşılık gelen alt dizeye, eğik çizgiden sonra onu çevreleyen parantez çiftinden sol köşeli ayraç numarası belirtilerek basitçe başvurulabilir. Parantezler birden başlayarak soldan sağa doğru numaralandırılır. Örneğin, normal ifadede /(bir iki üç dört)/\1 bir, \2 - "iki", \3 - "üç", \4 - "dört" anlamına gelir. Bu tür bağlantıların kullanımına örnek olarak, işte bir düzenli ifade /(\d)\1/, aynı basamaklı iki basamaklı sayılara karşılık gelir. Geri referansların kullanımının önemli bir sınırlaması, bunları sınıflarda kullanmanın, yani iki basamaklı bir sayıyı farklı basamaklarla düzenli bir ifadeyle tanımlamanın imkansızlığıdır. /(\d)[^\1]/ yasaktır.

    Unutulmaz parantezler

    Genellikle sembolleri basitçe gruplandırmak gerekir, ancak bir bağlantı oluşturmak gerekli değildir. Bu durumda, sol grup parantezinden hemen sonra ?: yazabilirsiniz. Örneğin, normal ifadede /(bir, iki, üç)/\2 "üç"ü gösterecek.

    Bu tür köşeli parantezlere bazen hatırlamama denir. Bir sonraki derste bahsedeceğimiz başka bir önemli özelliği daha var.

    Konum göstergesi

    Düzenli ifadeler ayrıca bir dizede belirli bir konumu gösteren meta karakterlere sahiptir. En sık kullanılan karakterler, satırın başlangıcını ve sonunu gösteren ^, $'dır. Örneğin, normal ifade /\..+$/ dosya adlarındaki uzantılarla ve normal ifadeyle eşleşir /^\d/ varsa dizideki ilk basamak.

    Pozitif ve negatif ileriye dönük kontroller

    Normal ifadeleri kullanarak, başka bir model tarafından tanımlanan bir alt dize tarafından takip edilen veya edilmeyen bir alt dizeyi de tanımlayabilirsiniz. Örneğin, java kelimesini ancak ardından "script" geliyorsa bulmamız gerekir. Bu problem düzenli bir ifade kullanılarak çözülebilir. /java(?=komut dosyası)/. Bir betik tarafından takip edilmeyen "java" alt dizesini tanımlamamız gerekirse, normal ifadeyi kullanabiliriz. /java(?!komut dosyası)/.

    Yukarıda bahsettiğimiz her şeyi bir tabakta toplayalım.

    Sembol Anlam
    a|b a veya i'ye karşılık gelir.
    (…) Grup parantezleri. Ayrıca, parantez içindeki kalıpla eşleşen bir alt dizgeye başvurulabilir.
    (?:…) Bağlantı kurma yeteneği olmadan yalnızca gruplama.
    \N n'inci kalıpla eşleşen bir alt dizgiye başvuru.
    ^ Girişin başlangıcı veya dizenin başlangıcı.
    $ Girişin sonu veya satırın sonu.
    bir(?=b) a kalıbı tarafından tanımlanan alt dizgiyi yalnızca, ardından b kalıbı tarafından tanımlanan alt dizgi geliyorsa eşleştirir.
    bir(?!b) a kalıbı tarafından açıklanan alt dizgiyi yalnızca ardından geliyorsa eşleştirir Olumsuz ardından b modeli tarafından açıklanan alt dize gelir.

    Bayraklar

    Ve son olarak, düzenli ifade sözdiziminin son öğesi. Bayraklar, normal ifadenin tamamı için geçerli olan eşleştirme kurallarını tanımlar. Diğer tüm öğelerin aksine, normal ifadelerin sözdizimi, normal ifade hazır bilgisinden hemen sonra yazılır veya nesne yapıcısına ikinci parametre olarak satır içinde iletilir normal ifade.

    JavaScript'te yalnızca üç normal ifade bayrağı vardır:

    Ben– bu bayrağı belirtirken, durum dikkate alınmaz, yani, örneğin normal ifade \javascript\i"javascript", "JavaScript", "JAVASCRIPT", "jAvAScript", vb. dizeleriyle eşleşir.

    M– bu bayrak çok satırlı aramayı etkinleştirir. Bu, metin yeni satırlar içeriyorsa ve bu işaret ayarlanmışsa, tüm metnin başına ve sonuna ek olarak ^ ve $ karakterlerinin de metindeki her satırın başına ve sonuna karşılık geleceği anlamına gelir. Örneğin, normal ifade /satır$/dk hem "birinci satır" dizesinde hem de "bir\nikinci satır\ntwo" dizesinde "satır" alt dizesiyle eşleşir.

    G– genel aramayı etkinleştirir, yani normal ifade, eğer bu bayrak açıksa, sanki bu bayrak yokmuş gibi, yalnızca birincisiyle değil, kendisiyle eşleşen tüm alt dizelerle eşleşir.

    Bayraklar birbirleriyle herhangi bir sırayla birleştirilebilir, yani \tkodlayıcı\mig, \tkoder\gim, \tocder\gmi ve benzeri, aynı şey. Bayrakların sırası, nesne yapıcısına ikinci argüman olarak bir dizgede geçirilip geçirilmedikleri de önemli değildir. normal ifade, yani yeni RegExp("tcoder", "im") Ve yeni RegExp("tcoder", "im") sadece aynı.

    Z.Y.

    Normal ifadeler, dizelerle çalışmak için çok güçlü ve kullanışlı bir araçtır ve yüzlerce kod satırını tek bir ifadeye indirgemenize olanak tanır. Ne yazık ki, sözdizimi bazen çok karmaşık ve okunması zor olabilir ve en deneyimli geliştirici bile birkaç gün önce yazdığı oldukça karmaşık bir düzenli ifadenin, hakkında yorum yapmazsa ne anlama geldiğini unutabilir. Bu nedenlerden dolayı, bazen normal dize işleme yöntemleri lehine düzenli ifadeleri terk etmeye değer.

    Düzenli ifadelerin sözdizimi oldukça karmaşıktır ve öğrenilmesi ciddi çaba gerektirir. Bugün düzenli ifadeler için en iyi rehber, yazarın sözleriyle "düzenli ifadeler açısından düşünmeyi öğrenen" J. Friedl'in Normal İfadeler kitabıdır.

    Temel konseptler

    Düzenli ifade- bir metin şablonunu tanımlayan dizeleri veya bir karakter dizisini işlemek için bir araç.

    Değiştirici- düzenli bir ifadeyi "talimat vermek" içindir.

    Meta karakterler- normal ifade dilinin komutları olarak hizmet eden özel karakterler.

    Normal ifade, normal değişken olarak ayarlanır, tırnak işaretleri yerine yalnızca eğik çizgi kullanılır, Örneğin: var reg=/regexp/

    En basit şablonlar altında, herhangi bir özel karaktere ihtiyaç duymayan şablonları kastediyoruz.

    Görevimizin tüm "r" harflerini (küçük ve büyük) Latin büyük harf "R" ile değiştirmek olduğunu varsayalım. Düzenli ifadeler.

    Bir şablon oluştur var reg=/r/ ve yöntemi kullanarak yer değiştirmek planlarımızı gerçekleştiriyoruz

    Sonuç olarak, satırı alıyoruz - Düzenli ifadeler, değiştirme yalnızca "r" harfinin ilk geçtiği yerde gerçekleşti, büyük/küçük harfe duyarlı.

    Ancak bu sonuç problemimizin şartlarına uymuyor... Burada ihtiyacımız olan değiştiriciler Ayrı ayrı veya birlikte kullanılabilen "g" ve "i". Bu değiştiriciler, eğik çizgiden sonra normal ifade modelinin sonuna yerleştirilir ve aşağıdaki anlamlara gelir:

    değiştirici"g" - dizideki aramayı "genel" olarak ayarlar, yani bizim durumumuzda, "p" harfinin tüm oluşumları için değiştirme gerçekleşecektir. Şimdi şablon şöyle görünür: var reg=/r/g, kodumuza değiştirerek

    ipi al - Düzenli ifadeler.

    "i" değiştirici- bu değiştiriciyi şablonumuza ekleyerek dizedeki aramayı duyarsız olarak ayarlar var reg=/r/gi, betiği yürüttükten sonra görevimizin istenen sonucunu alacağız - Düzenli ifadeler.

    Özel karakterler (meta karakterler)

    Meta karakterler, taranan metindeki belirli bir türdeki karakter sayısının yanı sıra arama dizesinin karakter türünü, arama dizisinin metin içinde çevrelenme biçimini belirtir. Bu nedenle, meta karakterler üç gruba ayrılabilir:

    • Eşleşen meta karakterler.
    • Nicel meta karakterler.
    • Meta karakterleri konumlandırma.

    Eşleşen Meta Karakterler

    Anlam

    Tanım

    kelime sınırı

    kalıbın bir kelimenin başında veya sonunda yürütülmesi gereken koşulu belirtir

    /\ber/ ile çakışıyor hata, ile eşleşmiyor kahraman veya ile oyuncu
    /er/ ile çakışıyor oyuncu, ile eşleşmiyor kahraman veya ile hata
    /\ber\b/ ile eşleşmiyor kahraman veya ile oyuncu veya ile hata, yalnızca eşleşebilir şey

    kelime sınırı değil

    kalıbın bir kelimenin başında veya sonunda yürütülmediği bir koşulu belirtir

    /\ber/ ile çakışıyor kahraman veya ile oyuncu, ile eşleşmiyor hata
    /er\B/ ile çakışıyor hata veya ile oyuncu, ile eşleşmiyor kahraman
    /\Ber\B/ ile çakışıyor kahraman, ile eşleşmiyor oyuncu veya ile hata

    0'dan 9'a kadar rakam

    /\d\d\d\d/ herhangi bir dört basamaklı sayıyla eşleşir

    /\D\D\D\D/ ile eşleşmiyor 2005 veya 05.g veya №126 vesaire.

    tek boş karakter

    bir boşluk karakteriyle eşleşir

    \over\sbyte\ sadece ile eşleşir fazla bayt

    boş olmayan tek karakter

    boşluk dışında herhangi bir karakter

    \over\Sbyte\ ile çakışıyor aşırı bayt veya ile fazla_bayt, ile eşleşmiyor fazla bayt veya fazla bayt

    harf, sayı veya alt çizgi

    /A\w/ ile çakışıyor A1 veya ile AB, ile eşleşmiyor +

    harf, sayı veya alt çizgi değil

    /A\W/ ile eşleşmiyor A1 veya ile AB, ile çakışıyor +

    herhangi bir karakter

    herhangi bir işaret, harf, sayı vb.

    /.../ herhangi üç karakterle eşleşir ABC veya [e-posta korumalı] veya 1 adet

    karakter seti

    köşeli parantez içine alınmış herhangi bir karakter eşleşmesi için kalıbın yürütülmesi gereken bir koşulu belirtir

    /WERTY/ ile çakışıyor qwerty, İle AĞRINTILI

    gelmeyen karakter kümesi

    köşeli parantez içine alınmış herhangi bir karakter eşleşmesi için kalıbın yürütülmemesi gereken bir koşulu belirtir

    /[^QA]WERTY/ ile eşleşmiyor qwerty, İle AĞRINTILI

    "Eşleşme için Meta Karakterler" tablosunda gösterilen karakterler, dizelerde kullanılan \\t - tablolama, \\n - yeni satır vb. gibi çıkış karakterlerinin sırası ile karıştırılmamalıdır.

    Nicel Meta Karakterler

    tesadüf sayısı

    Sıfır veya daha fazla kez

    /Ja*komut dosyası/ ile çakışıyor JavaScript veya ile JavaScript veya ile JavaScript, ile eşleşmiyor jovascript

    Sıfır veya bir kez

    /javascript/ sadece ile eşleşir JavaScript veya ile JavaScript

    Bir veya daha fazla kez

    /javascript/ ile çakışıyor JavaScript veya ile JavaScript veya ile JavaScript, ile eşleşmiyor JavaScript

    tam olarak n kez

    /Ja(2)yazı/ sadece ile eşleşir JavaScript

    n veya daha fazla kez

    /Ja(2,)yazı/ ile çakışıyor JavaScript veya ile JavaScript, ile eşleşmiyor JavaScript veya ile JavaScript

    en az n kez, ancak en fazla m kez

    /Ja(2,3)komut dosyası/ sadece ile eşleşir JavaScript veya ile JavaScript

    Nicel Metakarakterler tablosunda listelenen her karakter, normal ifadede bir önceki karakter veya metakarakter için geçerlidir.

    Meta Karakterleri Konumlandırma

    Son metakarakter kümesinin amacı, dizenin başında veya sonunda bir alt dize için nereye bakılacağını (önemliyse) belirtmektir.

    Şablonlarla çalışmak için bazı yöntemler

    yer değiştirmek- bu yöntemi makalenin en başında zaten kullandık, bir örnek aramak ve bulunan alt diziyi yeni bir alt diziyle değiştirmek için tasarlanmıştır.

    yönetici- bu yöntem, kalıp tarafından verilen kalıba karşı dizi eşleştirme gerçekleştirir. Kalıp eşleşmesi başarısız olursa, null döndürülür. Aksi takdirde sonuç, verilen kalıpla eşleşen bir alt dizi dizisidir. /*Dizideki ilk eleman, verilen kalıbı karşılayan orijinal dizgeye eşit olacaktır*/

    Örneğin:

    sonuç olarak dört satır elde ederiz:
    Doğum tarihi: 09/15/1980
    Doğum günü: 15
    Doğum ayı: 09
    Doğum yılı: 1980

    Çözüm

    Makale, normal ifadelerin tüm özelliklerini ve cazibesini göstermiyor, bu konuyu daha derinlemesine incelemek için RegExp nesnesini incelemenizi tavsiye ederim. Ayrıca düzenli ifadelerin sözdiziminin hem JavaScript'te hem de PHP'de farklı olmadığına dikkat çekmek istiyorum. Örneğin, bir e-posta girmenin doğruluğunu kontrol etmek için, normal bir ifade, JavaScript için ne, PHP için ne aynı görünecek /[e-posta korumalı]+.(2,3)/i.