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
Sembol | Yazışma |
---|---|
Alfanümerik karakterler | Kendilerini eşleştir |
\0 | NUL karakteri (\u0000) |
\T | Sekme (\u0009) |
\N | Satır besleme (\u000A) |
\v | Dikey sekme (\u000B) |
\F | Sayfa Çevirisi (\u000C) |
\R | Satır başı (\u000D) |
\xnn | Onaltılı sayı nn ile belirtilen Latin kümesinden bir karakter; örneğin, \x0A, \n ile aynıdır |
\uxxxx | Onaltılık xxxx ile belirtilen Unicode karakter; örneğin \u0009, \t ile aynıdır |
\cX | Kontrol 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|y | x 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.) |
\B | Boş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. |
\B | Bir 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. |
\cX | Burada X, A'dan Z'ye bir harftir. Bir dizgede bir kontrol karakteri belirtir. Örneğin /\cM/, Ctrl-M karakterini ifade eder. |
\D | herhangi 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. |
\D | Sayı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. |
\S | Boş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. |
\S | Boşluk dışında herhangi bir karakterle eşleşir. Örneğin /\S\w*/, "foo bar"da "foo"yu bulacaktır. |
\v | Dikey sekme karakteri. |
\w | Harfler, 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.
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
Sembol | Anlam |
---|---|
\ | 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 | y | x 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.) |
\B | Boş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. |
\B | Bir 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. |
\cX | Burada X, A'dan Z'ye bir harftir. Bir dizgede bir kontrol karakteri belirtir. Örneğin /\cM/, Ctrl-M karakterini ifade eder. |
\D | herhangi 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. |
\D | Sayı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,\n | Eşleşen özel karakterler form-besleme, satır-besleme, yeni satır. |
\S | Boş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. |
\S | Boşluk dışında herhangi bir karakterle eşleşir. Örneğin /\S\w*/, "foo bar"da "foo"yu bulacaktır. |
\T | Sekme karakteri. |
\v | Dikey sekme karakteri. |
\w | Harfler, 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. |
\N | burada 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. |
\xhh | hh kodlu karakteri bulun (2 onaltılık basamak) |
\uhhhh | hhhh (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 |
|
kibrit | Bir dizide eşleşme arar. Bir bilgi dizisi veya eşleşme yoksa null döndürür. |
aramak | Bir 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ştirmek | Bir dizede eşleşme arar ve bulunan alt dizeleri yeni bir alt dizeyle değiştirir. |
bölmek | Bir 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.globalkü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.ignoreCaseAçı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.lastIndexYorumlar
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.globalAçı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 |
|
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 |
|
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.