Kurallı ifadeleri kullanma
From LimeSurvey Manual
Kurallı ifadeler eğik çizgi ("/") ile başlamalı ve bitmelidir. İyi bir kurallı ifade kitaplığını https://www.regexlib.net/ adresinde bulabilirsiniz. Bu desenler, eğik çizgilerle çevrelendiklerinde neredeyse her zaman çalışır.
Kurallı ifadenizi test etmek için bu regex test aracını kullanabilirsiniz.
Önemli: Koşullarda kurallı ifadeler
Koşul düzenleyicisinde kurallı ifade kullanırken baştaki ve sondaki eğik çizgiyi EKLEMEYİN.
E-posta doğrulama
Güncelleme (12/2018): Günümüzde etki alanı adları yalnızca “ü” gibi özel karakterler içermekle kalmayıp .tech veya .company gibi 3 karakterden uzun uzantılar da kullanabildiğinden, aşağıdaki e-posta kurallı ifadesi yalnızca girilen e-posta adresinde “@” ve “.” karakterlerinin bulunup bulunmadığını denetler.
/^.+?@.+?\..+$/
Çok satırlı bir uzun yazı alanında satır başına bir adresi doğrulamak istiyorsanız:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/
Bu eski kurallı ifadede etki alanı adı 3 karakterle sınırlıdır ve mevcut tüm etki alanlarını kapsamaz:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Posta kodları
Avustralya posta kodları:
/^[0-9]{4}/
Brezilya posta kodları
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Kanada posta kodları
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
ABD posta kodları
/^[0-9]{5}([- /]?[0-9]{4})?$/
Posta kodunun sıfırla başlaması için şunu kullanın:
/^[0-9]{5}(?:-[0-9]{4})?$/
Birleşik Krallık posta kodları
/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Bunun çok kesin olmadığını, daha kesin bir doğrulamanın ise çok daha karmaşık olduğunu unutmayın. Daha fazla bilgi için örneğin StackOverflow yanıtına ve Wikipedia'ya bakın.
Fransa posta kodları
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/
Yukarıdaki ifade çok kesindir ve denizaşırı departmanlar ile denizaşırı topraklar (DOM-TOM) dahil olmak üzere Fransız departmanının (ilk iki hane) var olup olmadığını denetler.
Telefon numaraları
ABD telefon numaraları
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/
veya
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Bu ikinci seçenek, rakam olmayan sembollerin yer aldığı tüm Kanada ve ABD telefon numaralarıyla eşleşir. Bu semboller şunlardır:
. ( ) - (space)
Bu sayede aşağıdakine benzeyen telefon numaralarını eşleştirebilirsiniz:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Avustralya telefon numaraları
Aşağıdaki desenler, "+61" ülke ön ekiyle yazılanlar dahil olmak üzere tüm Avustralya cep ve sabit telefon numaralarıyla eşleşir:
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- +61 2 3456 789
Ancak şunlarla eşleşmez:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Parantezler, boşluklar ve tireler yok sayılır.
Burada listelenen 'Çok kesin:' sürümleri, geçerli Avustralya numaraları olduklarından emin olmak için bir numaranın ilk dört veya beş hanesini eşleştirir.
'Pek kesin değil:' sürümleri yalnızca birinci ve ikinci haneyi eşleştirir, bu nedenle geçersiz numaralara izin verebilir.
Tüm Avustralya telefon numaraları (cep ve sabit hat - alan kodu zorunlu)
Çok kesin:
/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/
Pek kesin değil:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Tüm Avustralya telefon numaraları (yalnızca sabit hat - alan kodu zorunlu)
Çok kesin:
/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/
Pek kesin değil:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Yeni Güney Galler sabit hat telefon numaraları (alan kodu isteğe bağlı)
Çok kesin:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Pek kesin değil:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Victoria ve Tazmanya sabit hat telefon numaraları (alan kodu isteğe bağlı)
Çok kesin:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Pek kesin değil:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Queensland sabit hat telefon numaraları (alan kodu isteğe bağlı)
Çok kesin:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Pek kesin değil:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Güney Avustralya, Kuzey Bölgesi, Batı Avustralya sabit hat telefon numaraları (alan kodu isteğe bağlı)
Çok kesin:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/
Pek kesin değil:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Yalnızca Avustralya cep telefonu numaraları
Çok kesin:
/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/
Pek kesin değil:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Belçika telefon numarası
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/
Belçika cep telefonu numarası
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Fransa telefon numarası
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Fransa cep telefonu numarası
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Lüksemburg telefon numarası
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Lüksemburg cep telefonu numarası
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Alman notları (isteğe bağlı artı veya eksi ile)
/^[1-6]{1}[\+|\-]?$/
Yaş doğrulama
Örnek: 20-99 yaş
/([2-9][0-9])/
Örnek: 18-35 yaş
/(1[8-9]|2[0-9]|3[0-5])/
Örnek: 19-65 yaş
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Sayı doğrulama
1'den 99999'a kadar sayılar
/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/
/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster
1'den 999'a, 1.000'den 999.999'a ve 999.999.999'a kadar sayılar
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
1'den 999'a, 1.000'den 999.999'a ve 999.999.999'a kadar olan sayıları kabul eder, ancak 999.1.1, 94.22.22, 999.1.22, 999.11.1, 999.1.333 gibi sayıları reddeder.
İsteğe bağlı ondalıklı sayı doğrulama (fiyat için)
0 ile 199 arasındaki sayıları kabul eder, 2 ondalık basamak isteğe bağlıdır:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/
Binlik ayırıcılı sayı doğrulama
Ayırıcı olarak boşluk, eksi işareti yok
/^(?!0)\d{1,3}(\ \d{3})*$/
Ayırıcı olarak nokta, eksi işaretine izin verilir
/^-?(?!0)\d{1,3}(\.\d{3})*$/
İki ondalık basamağı zorunlu kılar ve binlikleri/milyonları ayıran isteğe bağlı virgül ile 1.00 ile 999,999,999.00 arasındaki sayıları kabul eder. Aşağıdakilerin tümü kabul edilir: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 Ancak 1,23.00, 12,3.4 veya 1234,43.04 kabul edilmez.
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Yukarıdakine benzer: İki ondalık basamağı zorunlu kılar ancak "," ondalık ayırıcısından önce bir "0" kabul eder.
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Yukarıdakiyle aynı, ancak iki ondalık basamak isteğe bağlıdır:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/
Ay (1-12)
Bir kişinin doğduğu ayı soruyorsanız girdiyi aşağıdaki gibi doğrulayabilirsiniz:
/^[0]*[1-9]$|^[0]*1[0-2]$/
En az genişlik (bu örnekte 3 olarak ayarlanmıştır)
/^.{3,}$/
Para birimi
ABD para birimi (dolar işareti ve kuruş isteğe bağlı)
/^\$?\d+(\.(\d{2}))?$/
Virgül kullanımını denetleyin:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
İsviçre fiyatı
Ondalık noktasından sonra iki ondalık basamağı olan ve bunlardan sonuncusu 5 veya 0 olan bir sayı:
/^(\d+)(\.\d(05)?)?$/
Puan doğrulama
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Metin doğrulama
Birkaç kısa yazı soru türü şu anda en az veya en fazla yanıt sayısını desteklemez. Bunu aşmanın bir yolu, kurallı ifade ile birlikte Uzun serbest yazı soru türünü kullanmaktır.
Aşağıdaki ifade, satır başına en az bir kelime olacak şekilde en az 3 ve en fazla 10 satırı denetler:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is
Örneğin satır başına beş kelime istiyorsanız, ilk ve son yıldız/asterisk işaretini {4,} olarak değiştirebilirsiniz:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is
Satır başına bir veya daha fazla kelime istiyorsanız (1. ve 5. satır arasında), son süslü parantezlerin içindeki değeri 0,4 olarak değiştirebilirsiniz (ilk satırı zaten eşleştirdiğiniz için 0 kullandığınıza dikkat edin).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is
Kelime sayısı
Aşağıdaki ifade, izin verilen kelime sayısını en az 1 ve en fazla 200 ile sınırlar:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
En az değeri artırmak için {0,199} içindeki sıfır kısmını değiştirin.
En fazla değeri artırmak veya azaltmak için {0,199} içindeki "199" kısmını değiştirin.
Saat doğrulama
Saat biçimlerini yazmanın birçok yolu vardır. Olası seçeneklerden bazıları 12 saatlik veya 24 saatlik, saniyeli veya saniyesizdir. Tarih soru türünü kullanmak da bir seçenek olsa da (saati de alabilir), aşağıdaki doğrulama kurallı ifadelerinden biriyle Kısa serbest yazı soru türünü kullanabilirsiniz.
Aşağıdaki üç doğrulama dizesi, 24 saatlik saati sırasıyla saniyesiz, isteğe bağlı saniyeli ve son olarak zorunlu saniyeli olarak denetler:
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/
Aşağıdaki üçü 12 saatlik saati eşleştirir; yukarıdaki gibi sırasıyla saniyeli, isteğe bağlı saniyeli ve zorunlu saniyeli:
/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/
Aşağıdaki üçü 12 veya 24 saatlik saati eşleştirir; yukarıdaki gibi sırasıyla saniyeli, isteğe bağlı saniyeli ve zorunlu saniyeli:
/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/
ABD eyaletleri
Tek bir eyaleti doğrulamak için aşağıdakileri kullanın (örnek Teksas'tır):
- TX yalnızca büyük harf:
/^(TX)$/
- tx yalnızca küçük harf:
/^(tx)$/
- TX büyük veya küçük harf:
/^([T|t][X|x])$/
Küfür filtresi
Bir yanıttaki küfürlü sözcükleri süzmek için:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
"ENTERPROFANITYHERE" ifadesini kendi küfürlü sözcüğünüzle değiştirin.
\b ifadesi, küfürlü sözcük olarak "ass" veya "hell" girseniz bile "assassination" ve "hello" gibi sözcüklerin geçmesine izin verir. Bu yöntem, yanıtlardan başka sözcükleri, adları vb. çıkarmak istediğinizde de işe yarar.
Yararlı bağlantılar
Bu wiki bölümünün başında, düzenli ifadeleri test etmek/oluşturmak için https://regex101.com/ adresini kullanmanızı öneriyoruz. İlk seçenekten memnun kalmazsanız ifade oluşturmak için https://www.regextester.com/ adresini de kullanabilirsiniz. Düzenli ifadeleri görselleştirmek için https://extendsclass.com/regex-tester.html adresini kullanabilirsiniz.