Normal ifade hile sayfası
Düzenli ifadeler, sözdiziminin ezberlenmesinden daha kolay aranmasını sağlayacak kadar kompakttır. Bu sayfa, her satır için çalışan bir örnekle birlikte sınıfların, niceleyicilerin, bağlantıların, grupların, genel bakışın, kaçışın ve bayrakların tamamını tek bir ekranda gösterir.
Bu özellik, tarayıcınızda çalışan ve bu sitedeki normal ifade test aracının kullandığı JavaScript'tir. Çoğu Python, Java, Go ve PCRE'de aynıdır; tatların farklılaştığı yerlerde, kenarlarda farklılaşırlar - geriye dönük destek, adlandırılmış grup sözdizimi ve \d'nin "ASCII rakamı" mı yoksa "herhangi bir Unicode rakamı" anlamına mı geldiği.
Sürprizlerin çoğunu iki şey açıklıyor. Niceleyiciler açgözlüdür: ellerinden gelen her şeyi alırlar ve yalnızca modelin geri kalanı başarısız olduğunda geri verirler; bu nedenle <.+> iki etiketi yutar ve <.+?> yutmaz. Ve münavebe en gevşek olanı bağlar, dolayısıyla ^a|b$ "a ile başlar veya b ile biter" anlamına gelir - çoğu insanın bunu yazarken amaçladığı şey değildir.
Karakter sınıfları
Kısayollar, u bayrağını eklemediğiniz ve Unicode özellik çıkışlarını kullanmadığınız sürece yalnızca ASCII'dir.
| Sözdizimi | Anlam | Örnek |
|---|---|---|
| . | Satır sonu dışında herhangi bir karakterYeni satırlarla da eşleşmesi için s bayrağını ekleyin. | /a.c/"abc" → "abc" |
| \d | Bir rakam, 0–9 | /\d+/"order 42" → "42" |
| \D | Rakam olmayan herhangi bir şey | /\D+/"42abc" → "abc" |
| \w | Harf, rakam veya alt çizgiYalnızca ASCII — "é" \w değildir. | /\w+/"user_1!" → "user_1" |
| \W | \w ile eşleşen hiçbir şey yok | /\W+/"a++b" → "++" |
| \s | Sekmeler ve yeni satırlar dahil herhangi bir boşluk | /\s+/"a \t b" → " \t " |
| \S | Boşluk olmayan herhangi bir karakter | /\S+/" hi" → "hi" |
| [abc] | Listelenen karakterlerden herhangi biri | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Listelenenler dışında herhangi bir karakter | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Bir dizi karakter | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Herhangi bir Unicode harfi (u bayrağına ihtiyaç duyar) | /\p{L}+/"42 café" → "café" |
Niceleyiciler
Bunların hepsi varsayılan olarak açgözlüdür: Alabildiği kadarını alırlar ve ancak modelin geri kalanı başarısız olursa geri verirler.
| Sözdizimi | Anlam | Örnek |
|---|---|---|
| * | Sıfır veya daha fazla | /ab*/"a" → "a" |
| + | Bir veya daha fazla | /ab+/"abbb" → "abbb" |
| ? | Sıfır veya bir — isteğe bağlı hale getirir | /colou?r/"color" → "color" |
| {3} | Tam olarak üç | /\d{3}/"id 12345" → "123" |
| {2,} | İki veya daha fazla | /a{2,}/"aaa" → "aaa" |
| {2,4} | İki ile dört arasında | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Tembel – mümkün olduğu kadar az şey alırAçgözlü <.+> her iki etiketi de yutar. | /<.+?>/"<a><b>" → "<a>" |
Bağlantı noktaları ve sınırlar
Bunlar bir karakterle değil bir konumla eşleşir, dolayısıyla hiçbir şey tüketmezler.
| Sözdizimi | Anlam | Örnek |
|---|---|---|
| ^ | Dizenin veya m bayrağını içeren bir satırın başlangıcı | /^a/"abc" → "a" |
| $ | Dizenin sonu veya m bayrağını içeren bir satırın sonu | /c$/"abc" → "c" |
| \b | Bir kelime sınırıBu, "birleştirme" içindeki "kedi" eşleşmesini durduran şeydir. | /\bcat\b/"the cat sat" → "cat" |
| \B | Kelime sınırı değil | /\Bcat/"concatenate" → "cat" |
Gruplar ve değişim
| Sözdizimi | Anlam | Örnek |
|---|---|---|
| (abc) | Yakalama grubu — değiştirilmek üzere hatırlandı | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Yakalamadan gruplamaBunu yalnızca gruplandırmaya ihtiyaç duyduğunuzda kullanın; yakalama sayılarını anlamlı tutar. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Adlandırılmış yakalama grubu | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Her iki taraf da - değişimDönüşüm en düşük önceliğe sahiptir: ^a|b$ "^a" veya "b$"dır, "^(a|b)$" değil. | /cat|dog/"one dog" → "dog" |
| \1 | İlk gruba geri referans | /(\w)\1/"letter" → "tt" |
Çevreye bakış
Bir konumu çevreleyen şeylerle ilgili iddialar. Kendileri hiçbir şeye uymuyorlar, bu da onları birleştirmeyi güvenli kılan şey.
| Sözdizimi | Anlam | Örnek |
|---|---|---|
| (?=…) | Lookahead — bunu takip ediyor | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negatif bakış açısı - bunu takip etmiyor | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Arkaya bakma — bundan önce | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negatif geriye bakış — bundan önce gelmedi | /(?<!\$)\b\d+/"about 40" → "40" |
Kaçış
Bu on iki karakter, kelimenin tam anlamıyla anlaşılması için ters eğik çizgiye ihtiyaç duyan karakterlerdir.
| Sözdizimi | Anlam | Örnek |
|---|---|---|
| \. | Gerçek bir nokta | /\d\.\d/"v2.5" → "2.5" |
| \\ | Gerçek bir ters eğik çizgi | /\\/"C:\\dir" → "\\" |
| \n | Bir satır beslemesi | /a\nb/"a\nb" → "a\nb" |
| \t | Bir sekme | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Kod noktasına göre bir karakter | /\u00e9/"café" → "é" |
Bayraklar
| Bayrak | İsim | Anlam |
|---|---|---|
| g | Küresel | Sadece ilkini değil, her eşleşmeyi bulun. |
| i | Büyük/küçük harf durumunu yoksay | Büyük veya küçük harfe bakılmaksızın eşleştirin. |
| m | Çok satırlı | ^ ve $'ın yalnızca dizenin sonunda değil, her satır sonunda eşleşmesini sağlar. |
| s | Tümünü noktala | Haydi. maç çizgisi de bozulur. |
| u | Unicode | Deseni kod noktaları olarak ele alır ve \p{…} özelliğinin kaçışını etkinleştirir. |
| y | Yapışkan | Yalnızca tam olarak lastIndex ile eşleşir, asla ileriye doğru arama yapmaz. |