Welcome to XENTR - Think Different and Make it...

Join us now to get access to all our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, and so, so much more. It's also quick and totally free, so what are you waiting for?

Bilgi XenForo'da Yeni Kullanıcı Adı Karakter Kısıtlamaları RegEx Matching

Merhaba arkadaşlar,
Bildiğiniz gibi XenForo'da yeni kullanıcılar için karakter kısıtlamalarını belirleyeceğimiz bir seçenek var.
Bir çok kullanıcı bu alanda tam olarak eşleşmesi gereken RegEx kodlarını tam olarak bilmiyor.

Regular Expressions Nedir?

(Regex veya Regexp / Düzenli / Kurallı İfadeler) modern programlama dillerinin neredeyse tamamında yer bulan, aynı söz dizimine (syntax) sahip olan, genellikle harflerden olusan karakterler dizisinin (katar / string) belirtilen kurallar çerçevesinde kısa yoldan ve esnek bir biçimde belirlenmesini sağlayan bir yapıdır.

Kullanıcı Adlarında Düzenli İfadelerin Kullanım Amacı

  • Kullanıcı tarafından girilen girdinin denetimi,
  • Verilerin kullanım amacına uygun biçime sokulması.
  • Kullanıcı adlarında karakter sınırlamaları ile belirlenen forma getirilmesi
Regex Özel Karakter Tanımlamaları

Aşağıda özel karakterlerin işlevlerinin anlatımlarına ek olarak örneklerine de yer vereceğim. Bu örneklerin kullanımları için regex101.com ve regexr.com siteleri işinizi görecektir.

Meta Karakterler (Escaped Characters)

“.“
Sayfa ya da paragraf sonu dışındaki herhangi bir karakteri temsil eder. Örnek olarak “k.re” ifadesi “küre”, “kare”, “kore”, “kere” ile eşlenecektir.

$“
Eşlendiği ifadenin sonunu belirtir. Boşluklar ve paragraf başındaki özel nesneler dikkate alınmaz. Örneğin paragraf sonundaki “iner$” ifadesini belirlemek bu şekilde mümkün olacaktır. Bu şekilde paragraf sonlarını bulup değiştirmek mümkün olmaktadır.

“^“
“$” ifadesine ters olarak, eğer terim sadece paragraf başında ise aranılan ifadeyi bulur. Örnek olarak “^Sabahleyin” ifadesi “Sabah, Sabahleyin…” gibi ifadelere sınır belirtilmemişse eşleşmeye devam eder.

^ köşeli parantez [] içinde kullanıldığında kendisinden sonra belirtilen karakter veya grubun bulunmayacağını ifade eder.

“*“
Önünde bulunduğu karakterin 0 veya tekrarlarıyla eşlenir. “.*” ifadesi bütün karakterlere eşlenirken, “a*t” ifadesi “t, tt, at” ile eşlenir.

“[ ]“
Köşeli parantezler, içindeki tüm karakterlerle eşlenir. Örnek olarak “S[ai]z” ifadesi “Saz” ve “Siz” ile eşlenir.


“[c1-c2]“
Belirtilen aralığa göre (- ile) eşleniklerin belirlenmesinde kullanılır. Örneğin “[0-9]” ifadesi bütün rakamlar ile eşlenir. Birleşik ifadeye örnek olarak “[A-Za-z]” ifadesi de bütün harflerle büyük küçük ayrımı yapmadan eşlenecektir.


“[^c1-c2]“
Belirtilen aralık harici bütün karakterlere eşlenir. Örnek olarak “[^123a-z]” ifadesi 1, 2, 3 sayıları ve bütün küçük harfler dışında bütün ifadelere eşlenir.


“( )“
İfadeyi gruplandırır, gruplandırılmış ifadelerine denk gelen kalıpları (en fazla 9 kalıp) saklar.Parantez içinde belirtilen karakterleri başvuru olarak tanımlar. İlk başvuruya “\1” ile, ikinci başvuruya “\2” gibi biçimlerde başvurulur.Örneğin, metniniz 1988, 1980, 1999, 1898 ve 1919 tarihlerini içersin. Aramanız (8)9\1 düzenli ifadesini kullanıyorsa, “898” sonucu bulunur.

“|“
Veya/yada anlamındadır, belirtilen iki ifadeyle ayrı ayrı eşlenebilir. Örneğin “k(a|u)le” ifadesi, “kale” ve “kule” ifadelerine eşlenir.

“+“
Kendinden önce gelen ifadenin bir veya daha fazla kullanımına eşlenir. Örnek olarak “z+” ifadesi z, zz, zzz… ile eşlenir.

“?“
Kendinden önce gelen ifadenin 0 veya 1 tekrarıyla eşlenir.

“{ }“
Kendinden önceki ifadenin belirlenen sayıda tekrarıyla eşlenir. Örneğin “a[0-5]{2}” ifadesi a harfi ile başlayıp yanında 0 ile 5 arasında 2 tane rakam olan, a12, a24, a14 gibi ifadelerle eşlenir.


“{i,j}“
Belirtilen sayıda tekrar önceki ifade bağlamında eşlenir. Örneğin “[0-9]{4,6}” ifadesi bütün 4, 5 veya 6 elemanlı sayı dizilerine eşlenir.


Karakter Etiketleri

“\d“
[0-9] – herhangi bir rakam

“\D“
[^0-9] – rakam olmayan herhangi bir ifade

“\w“
[a-zA-Z0-9_] – türkçe harfler hariç, alfanümerik herhangi bir harf, rakam veya alt çizgi.

“\W“
[^a-zA-Z0-9_] – alfanümerik olmayan.

“\s“
[ \t\n\r\f] – herhangi bir boşluk karakteri

“\S“
[^ \t\n\r\f] – boşluk karakteri olmayan.Kullanım olarak başlangıçta karışık görünebilir, ancak biraz pratikten sonra aslında kullanımının oldukça kolay ve işlevsel olduğu görülmektedir.

Bu açıklamalardan sonra tekrar konumuza dönecek olursak,
Gelin şimdi hep birlikte Yeni kullanıcı kayıt seçenekleri için bir örnek yapalım.

İlgili alanan erişim adresimiz: admin.php?options/groups/usersAndRegistration/

XenForo Seçenekleri | Seçenekler | Yeni Kullanıcı Kayıt Seçenekleri

Gördüğünüz gibi ilgi alan varsayılan da boş olarak geliyor.

1602

Eğer biz utf-8_turkish_ci karakter dışında ve boşluk içeren adları engelleyecek olursak, kullanmamız gereken RegEx kodumuz şu şekilde olacaktır.

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

1603

RegEx, bir çok uygulama ve işlemde kullanılabildiği için pratik alanı oldukça geniştir. Kullanımına ilişkin örnekler bağlamında vakit buldukça konu altında kodlarımızı eklemeye devam edeceğim.
 

oktay

XenTR Müşterisi
Müşteri
XenTR Üyesi
Katılım
4 Haz 2019
Mesajlar
48
Çözümler
2
Tepki puanı
25
Çok teşekkür ediyorum ben de instagram ile aynı olmasını istiyorum bu sınırlamanın.
Hali hazırda kullandığım kod:
/^[a-zA-Z0-9\S]+$/u

Ancak verdiğiniz bilgiler doğrultusunda yeniden düzenleme yapacağım.
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst