Regexp a kontrola délky – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Regexp a kontrola délky – .NET – Fórum – Programujte.comRegexp a kontrola délky – .NET – Fórum – Programujte.com

 

Aigor0
Newbie
31. 7. 2014   #1
-
0
-

Ahoj,

hraju si s validací zadání souboru, kde je mírně složitější regexp výraz (soubor je volitelně zadán s cestou a musí končit příponou .xml)

Problém je, že se mi nedaří doplnit omezení na délku celého řetězce. Bylo by navíc ideální, kdyby to počítalo délku v bytech a ne podle znaků (podle UTF-8), ale to si nejsem jistý, jestli umí.

Regex rv_filename = new Regex(@"^(([A-Za-z]:\\){0,1})([A-Za-z0-9.\\]{1,})(.xml{1})$");


Jak upravit RV, aby celé zadání mělo délku 10-128 znaků ?

Děkuji :-)

Nahlásit jako SPAM
IP: 46.149.119.–
ASM -> Pascal -> C -> C++ -> PHP/mySQL and now C# && .NET beginner..
Flowy0
Věrný člen
31. 7. 2014   #2
-
0
-

   

([A-Za-z]:\\)?[A-Za-z0-9\.\\]{6,121}\.xml

minimalne 10 znakov (alebo minimalne 13 s diskom) a maximalne 125 znakov (alebo 128 s diskom)


([A-Za-z0-9\.\\]{6,124}\.xml)|([A-Za-z]:\\[A-Za-z0-9\.\\]{3,121}\.xml)

minimalne 10 znakov maximalne 128 znakov
  • escapuj bodky
  • neurcuj zaciatok a koniec ak to neni kriticke ... ked tento pattern aplikujes na string tak bud prejde cely alebo nie ... ked tam urcis zaciatok a koniec tak sa zbavis moznosti pouzit ho na cast retazca
  • pre pocet vyskytov 0-1 je znak ?
  • ak chces aby sa znaky vyskytovali v danom poradi tak ich proste napises ... do skupiny ich davas len ak chces aby boli v inom pocte ako 1 (0 alebo viac)
  • ak spravis 'aaa?' tak ti prejde 'aa' alebo 'aaa' (podla toho co tam mas to vyzera ze by si cakal 'aaa' alebo '')

Nahlásit jako SPAM
IP: 95.103.199.–
https://github.com/Flowy
Aigor0
Newbie
1. 8. 2014   #3
-
0
-

#2 Flowy
Diky, ale jde mi jeste trochu o neco jineho. Nedal jsem nejlepsi priklad...

Dejme tomu: "aa.bb.cc.dd" je OK, znaky smi byt oddeleny teckou, carkou, pomlckou, nebo strednikem, ale zadny z techto znaku se nesmi opakovat vic jak jednou po sobe. Retezec oddelovacem nesmi zacinat, nebo koncit. Nezalezi na poctu skupin, ale celkova delka nesmi presahnout 10 znaku.

aaa-aa.bbc = true

a,aaaa.-aa = false

.a = false

a.b.c.d.e = true

Skladam to obvykle tak, ze 1x povinne skupina pismen a pak libovolne opakovani oddelovace(volitelne), nasledovana znovu skupinou pismen, povinne aspon jednou.

V teto syntaxi ale nevim jak zahrnout omezeni celkove delky, protoze celou delku muze zabrat jeden blok pismen, nebo xy bloku mezi oddelovaci...

A dalsi level je pak diakritika. Spravne by nemelo projit ani "čč.čč.čč", protoze v UTF-8 ma vic jak 10 Byte.

Nahlásit jako SPAM
IP: 46.149.119.–
ASM -> Pascal -> C -> C++ -> PHP/mySQL and now C# && .NET beginner..
Flowy0
Věrný člen
1. 8. 2014   #4
-
0
-

nesmie byt na zaciatku konci znak - proste si vyziadaj na zaciatku/konci skupinu znakov ktore tam byt mozu

myslim ze pocitat pocet skupin je mimo regularnych jazykov (na to by si potreboval minimalne bezkontextove a v tomto pripade aj kontextove) ... najlepsie bude asi spravit vlastny validator kde mozes zaroven kontrolovat aj bity

Nahlásit jako SPAM
IP: 95.103.199.–
https://github.com/Flowy
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 47 hostů

Podobná vlákna

Zjištění délky řetězce — založil hejnallukas

Regexp — založil Figa

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý