Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 3.173 pregleda

Najnovija ↓

Pomoc oko REGEXP-a 21.01.2010. u 19:00 · pre 204 meseca #1
Treba mi mala pomoc;
imam sledeci regexp:
/^[a-zA-ZžŽđĐšŠćĆčČ ]+$/

Treba mi da je validan ako je string prazan (ne NULL, vec nula duzina) ili ako nije prazan da proveri po gornjem pravilu. Ubih se trazeci i ne mogu da ga napravim. Pomoc?
Re: Pomoc oko REGEXP-a 21.01.2010. u 20:07 · pre 204 meseca #3
Moja greska, nisam dobro prepisao regex, treba:

/^[a-zA-ZžŽđĐšŠćĆčČ ]{3,20}$/

Znaci ili prazan string ili da ima izmedju 3 i 20 karaktera.

@aleksandar
Hvala, radi za onaj koji sam prvi put poslao, ali ne i za ovaj.
Re: Pomoc oko REGEXP-a 21.01.2010. u 20:13 · pre 204 meseca #4
Pa stavi onda samo {0,20} umesto {3,20}.
Re: Pomoc oko REGEXP-a 21.01.2010. u 20:14 · pre 204 meseca #5
Hmm, aj probaj ovako:

Code:


// Pretpostavimo da je $string string koji imas

$string = trim($string); // Obrisi whitespace-ove

$regex = "/[\w\s]{3,20}/";

if (empty($string) || preg_match($regex, $string)) {

// String je ok

}



Nisam probao, ali mislim da bi trebalo da radi...
Re: Pomoc oko REGEXP-a 21.01.2010. u 21:37 · pre 204 meseca #6
Samo jedan mali heads-up. Matchovanje utf8 karaktera ne radi (jos uvek, kako treba). Da, ima u modifier, ali zna da pravi probleme.

Code (php):


$string = 'š';

var_dump(preg_match('#\w{1}#', $string)); // 0

var_dump(preg_match('#\w{1}#u', $string)); // 0

var_dump(preg_match('#.{1}#', $string)); // 1

mb_regex_encoding('utf-8');
var_dump(mb_ereg_match('\w{1}', $string)); // true

 


Tako da, prvi pattern nece machovati nista ako su uneti samo utf8 karakteri.
Re: Pomoc oko REGEXP-a 22.01.2010. u 01:17 · pre 204 meseca #7
Citat:
Man-Wolf: Hmm, aj probaj ovako:

Code:


// Pretpostavimo da je $string string koji imas

$string = trim($string); // Obrisi whitespace-ove

$regex = "/[\w\s]{3,20}/";

if (empty($string) || preg_match($regex, $string)) {

// String je ok

}



Nisam probao, ali mislim da bi trebalo da radi...


Uradio bih ja to, ali mora da ostane regexp. Koristim Doctrine validaciju pa ne mogu da pisem custom f-je. Tj. mogu, al sto komplikovati.

Citat:
Nikola Poša: Pa stavi onda samo {0,20} umesto {3,20}.


Mora da bude ili prazan string ili da ima izmedju 3 i 20 karaktera. Ne moze 1 ili 2 i mora da bude jedan regexp. Ludilo, nigde na netu ne mogu da nadjem regexp za ovo.
Re: Pomoc oko REGEXP-a 22.01.2010. u 01:20 · pre 204 meseca #8
Citat:
kazil: Samo jedan mali heads-up. Matchovanje utf8 karaktera ne radi (jos uvek, kako treba). Da, ima u modifier, ali zna da pravi probleme.

Code (php):


$string = 'š';

var_dump(preg_match('#\w{1}#', $string)); // 0

var_dump(preg_match('#\w{1}#u', $string)); // 0

var_dump(preg_match('#.{1}#', $string)); // 1

mb_regex_encoding('utf-8');
var_dump(mb_ereg_match('\w{1}', $string)); // true

 


Tako da, prvi pattern nece machovati nista ako su uneti samo utf8 karakteri.


Ne znam za ovo, meni potpuno normalno rade nasa slova. Jedino sto svako nase slovo broji 2 bajta, ali to mi nije narocito bitno.
Re: Pomoc oko REGEXP-a 22.01.2010. u 01:35 · pre 204 meseca #9
Ok drugari, nasao sam resenje. Ako nekog zanima, | je regexp za OR, pa je izraz:

/^([a-zA-ZžŽđĐšŠćĆčČ ]{3,20}|)$/
Re: Pomoc oko REGEXP-a 22.01.2010. u 07:02 · pre 204 meseca #10
Vid' stvarno hvata nase karaktere ako se unesu u regex... funny. A da li si mozda probao sa cirilicom? Ako vec koristis šđžčć u regexu, mozda ti se pojave i cirilicna slova, a dodavati 60 karaktera u regex rucno je... Neprakticno. U tom slucaju probaj sa mb_* funkcijama.
Re: Pomoc oko REGEXP-a 22.01.2010. u 22:16 · pre 204 meseca #11
Citat:
kazil: Vid' stvarno hvata nase karaktere ako se unesu u regex... funny. A da li si mozda probao sa cirilicom? Ako vec koristis šđžčć u regexu, mozda ti se pojave i cirilicna slova, a dodavati 60 karaktera u regex rucno je... Neprakticno. U tom slucaju probaj sa mb_* funkcijama.


Ja sam 'strani placenik' pa me za cirilicu nimalo ne brine :)

Zezam se. Probacu, mada koliko se secam, nikad sa time nisam imao problema. Tj. bar se klijenti nisu zalili a meni iskreno nije ni palo na pamet da testiram tako nesto.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme