/// <summary> /// Cenzuriranje na nedozvoleni sodrzini vo ramki na postavena poraka. /// </summary> /// <param name="poraka">Poraka koja kje bide cel na proverka.</param> /// <returns>Objekt od tip RegExNas, koj vo sebe go sodrzi rezultatot od proverkata.</returns> public IRegEx ProveriPorakaSodrzina(String poraka) { RegExNas rezultat = new RegExNas(poraka); Regex reg = new Regex(@"^[-0-9аАбБвВгГдДѓЃеЕжЖзЗѕЅиИјЈкКлЛљЉмМнНњЊоОпПрРсСтТќЌуУфФхХцЦчЧџЏшШa-zA-Z,\.!/:;?'+*)(\[\]\{\} ^_^]{1,50}$"); const String CensoredText = "^_^"; const String PatternTemplate = @"\b({0})(s?)\b"; const RegexOptions Options = RegexOptions.IgnoreCase; String[] badWords = new[] { "глуп", "глупа", "глупав", "глупава", "глупави", "вол", "мрсул", "г'з", "лајно", "лајна", "лигуш", "мрсули", "курва", "кур", "пичка", "пички", "ороспија", "сељак", "гомно", "гомна", "курви", "ороспии", "простак", "простачка", "курвар", "гад", "цицка", "цицки", "дебил", "дебили", "недоделкан", "недоквакан", "ебе", "ебаго", "ебем", "пичка ти", "пичкати", "мамето", "мамата", "материна", "гз", "идиот" }; Boolean sodrziZbor = false; foreach (String zbor in badWords) { if (poraka.ToLower().Contains(zbor)) { sodrziZbor = true; break; } } if (sodrziZbor == true) { IEnumerable<Regex> badWordMatchers = badWords.Select(x => new Regex(string.Format(PatternTemplate, x), Options)); String input = poraka; String output = badWordMatchers.Aggregate(input, (current, matcher) => matcher.Replace(current, CensoredText)); poraka = output; rezultat.IzmenetVlez = poraka; } if (reg.IsMatch(poraka)) { if (sodrziZbor == false) { rezultat.uspeh = true; } else { rezultat.uspeh = false; rezultat.poraka = "Пораката е со несоодветна содржина"; } } else { rezultat.poraka = "Пораката содржи некои специјални знаци"; rezultat.IzmenetVlez = "F"; } return rezultat; }
/// <summary> /// Funkcijata ima za cel da go opredeli tipot na validatorot i spored toa da vrati soodveten /// regularen izraz. /// </summary> /// <param name="v">Tip na validator.</param> /// <param name="o">Objekt nad koj moze da se pravi validacija.</param> /// <returns>Regularen izraz, za opredeleniot tip na validator.</returns> public IRegEx Produce(ValidatorEnum v, object o) { RegExNas regex = new RegExNas(); ProveriKorisnik korValidator; ProveriMaterijal matValidator; ProveriPoraka porValidator; if (v == ValidatorEnum.Korisnik_UserID) { korValidator = new ProveriKorisnik(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(korValidator.ProveriUserID); } else if (v == ValidatorEnum.Korisnik_Lozinka) { korValidator = new ProveriKorisnik(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(korValidator.ProveriLozinka); } else if (v == ValidatorEnum.Korisnik_Email) { korValidator = new ProveriKorisnik(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(korValidator.ProveriEmail); } else if (v == ValidatorEnum.Korisnik_Ime) { korValidator = new ProveriKorisnik(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(korValidator.ProveriIme); } else if (v == ValidatorEnum.Korisnik_Prezime) { korValidator = new ProveriKorisnik(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(korValidator.ProveriPrezime); } else if (v == ValidatorEnum.Materijal_Naslov) { matValidator = new ProveriMaterijal(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(matValidator.ProveriNaslov); } else if (v == ValidatorEnum.Materijal_Opis) { matValidator = new ProveriMaterijal(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(matValidator.ProveriOpis); } else if (v == ValidatorEnum.Poraka_Sodrzina) { porValidator = new ProveriPoraka(); regex.FunkcijaValidiraj = new RegExNas.ValidateObject(porValidator.ProveriPorakaSodrzina); } return regex; }
/// <summary> /// Proverka na korektnost korisnicka lozinka. /// Dozvolena struktura: site karakteri, so dolzina nad 8 karakteri so zadolzitelno koristenje na eden ili poveke broevi. /// </summary> /// <param name="lozinka">Korisnicka lozinka koj kje bide cel na proverka.</param> /// <returns>Objekt od tip RegExNas, koj vo sebe go sodrzi rezultatot od proverkata.</returns> public IRegEx ProveriLozinka(String lozinka) { RegExNas rezultat = new RegExNas(lozinka); Regex reg = new Regex(@"^(\w|\d){8,50}$"); Regex reg2 = new Regex(@"\d"); if (reg.IsMatch(lozinka) && reg2.IsMatch(lozinka)) { rezultat.uspeh = true; } else { rezultat.poraka = "Лозинката треба да има минимум 8, а максимум 50 карактери и мора да содржи барем една цифра"; } return rezultat; }
/// <summary> /// Proverka na korektnost korisnicki ID. /// Dozvolena struktura: alfabeta (a-z A-Z), brojki, _, so dolzina od minimum 5 a maksimum 45 karakteri. /// </summary> /// <param name="userID">Korisnicki ID koj kje bide cel na proverka.</param> /// <returns>Objekt od tip RegExNas, koj vo sebe go sodrzi rezultatot od proverkata.</returns> public IRegEx ProveriUserID(String userID) { RegExNas rezultat = new RegExNas(userID); Regex reg = new Regex(@"^[a-zA-Z0-9_]{5}(\w){0,45}$"); if (reg.IsMatch(userID)) { rezultat.uspeh = true; } else { rezultat.poraka = "Корисничкото име треба да содржи минимум 5 карактери од латиницата, бројки или долна црта, а максимум 45 карактери"; } return rezultat; }
/// <summary> /// Proverka na korektnost korisnicki email. /// Dozvolena struktura: [email protected] /// </summary> /// <param name="mail">Korisnicki email koj kje bide cel na proverka.</param> /// <returns>Objekt od tip RegExNas, koj vo sebe go sodrzi rezultatot od proverkata.</returns> public IRegEx ProveriEmail(String mail) { RegExNas rezultat = new RegExNas(mail); Regex reg = new Regex(@"^(([^<>()[\]\\.,;:\s@\""]+" + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@" + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+" + @"[a-zA-Z]{2,}))$"); if (reg.IsMatch(mail)) { rezultat.uspeh = true; } else { rezultat.poraka = "Внесете валидна email адреса"; } return rezultat; }
/// <summary> /// Cenzuriranje na nedozvoleni sodrzini vo ramki na opisot za postaven materjal. /// </summary> /// <param name="opis">Opis koj kje bide cel na proverka.</param> /// <returns>Objekt od tip IRegEx, koj vo sebe go sodrzi rezultatot od proverkata.</returns> public IRegEx ProveriOpis(String opis) { RegExNas rezultat = new RegExNas(opis); Regex reg = new Regex(@"^[-0-9аАбБвВгГдДѓЃеЕжЖзЗѕЅиИјЈкКлЛљЉмМнНњЊоОпПрРсСтТќЌуУфФхХцЦчЧџЏшШ,\.!/:;?'+*)(\[\]\{\} ^_^]{1,500}$"); const String CensoredText = "^_^"; const String PatternTemplate = @"\b({0})(s?)\b"; const RegexOptions Options = RegexOptions.IgnoreCase; String[] badWords = new[] { "глуп", "глупа", "глупав", "глупава", "глупави", "вол", "мрсул", "г'з", "лајно", "лајна", "лигуш", "мрсули", "курва", "кур", "пичка", "пички", "ороспија", "сељак", "гомно", "гомна", "курви", "ороспии", "простак", "простачка", "курвар", "гад", "цицка", "цицки", "дебил", "дебили", "недоделкан", "недоквакан", "ебе", "ебаго", "ебем", "пичка ти", "пичкати", "мамето", "мамата", "материна", "гз", "идиот" }; Boolean sodrziZbor = false; foreach (String zbor in badWords) { if (opis.ToLower().Contains(zbor)) { sodrziZbor = true; break; } } if (sodrziZbor == true) { IEnumerable<Regex> badWordMatchers = badWords.Select(x => new Regex(string.Format(PatternTemplate, x), Options)); String input = opis; String output = badWordMatchers.Aggregate(input, (current, matcher) => matcher.Replace(current, CensoredText)); opis = output; rezultat.IzmenetVlez = opis; rezultat.poraka = "Описот содржи несоодвтени зборови и истите беа заменети."; } if (reg.IsMatch(opis)) { rezultat.uspeh = true; } else { rezultat.uspeh = false; rezultat.poraka = "Описот може да содржи максимум 500 кирилични букви."; } return rezultat; }
/// <summary> /// Proverka na korektnost korisnicko ime. /// Dozvolena struktura: kirilicna azbuka, so dolzina od minimum 1 a maksimum 30 karakteri. /// </summary> /// <param name="ime">Korisnicko ime koj kje bide cel na proverka.</param> /// <returns>Objekt od tip RegExNas, koj vo sebe go sodrzi rezultatot od proverkata.</returns> public IRegEx ProveriIme(String ime) { RegExNas rezultat = new RegExNas(ime); Regex reg = new Regex(@"^[аАбБвВгГдДѓЃеЕжЖзЗѕЅиИјЈкКлЛљЉмМнНњЊоОпПрРсСтТќЌуУфФхХцЦчЧџЏшШ]{1,30}$"); if (reg.IsMatch(ime)) { rezultat.uspeh = true; } else { rezultat.poraka = "Внесете го вашето име со кирилична поддршка (дозволени се максимум 30 букви)"; } return rezultat; }