NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Regulární výraz pro validaci

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
David Tilšer:18.2.2018 14:07

Zdravím Vás,

nevěděl jsem do jaké sekce to dát a vzhledem k tomu, že to řeším v Java aplikaci, tak to dávám sem.
Mám regulární výraz pro validaci textu.
Stávající podoba - "[\\p{C}&&[^\­\n\\r\\t]]"

V regulární výrazu jsou zakázány znaky \n - line feed (0x0A), \r - carriage return (0x0D) a \t - tab character (ASCII 0x09).
No a já bych potřeboval povolit znaky typu - \f (form feed, 0x0C), ale tento regulární výraz mi je zakazuje, což nechápu jak to. A když ho upravím "[\\p{C}&&\\f­&&[^\\n\\r\\t]]", tak mi to zruší veškeré zakázané znaky a validací mi v klidu projdou např. \r znaky.

Co dělám špatně? Čemu špatně rozumím?

Díky za rady.

Odpovědět
18.2.2018 14:07
Odpočinek je pro slabochy.
Avatar
Neználek
Člen
Avatar
Odpovídá na David Tilšer
Neználek:18.2.2018 16:39

Není spíš problém v tom, že ve výrazu chybí kvantifikátor?
Pro řetězec obsahující pouze jeden znak \f regulární výraz mečuje.

Kód

System.out.println("\f".matches("[\\p{C}&&[^\n\\r\\t]]"));

Výstup

true
 
Nahoru Odpovědět
18.2.2018 16:39
Avatar
Odpovídá na Neználek
David Tilšer:19.2.2018 10:03

Takže jak bych to měl upravit, aby mi validací prošlo libovolný počet znaků /f a neprošel mi žádný znak /n, /r a /t?

Nahoru Odpovědět
19.2.2018 10:03
Odpočinek je pro slabochy.
Avatar
Neználek
Člen
Avatar
Odpovídá na David Tilšer
Neználek:21.2.2018 21:31

Pokud má procházet libovolný počet znaků (včetně žádných znaků), je třeba přidat hvězdičku.

"[\\p{C}&&[^\n\\r\\t]]*"

Pokud alespoň jeden znak, tak plus.

"[\\p{C}&&[^\n\\r\\t]]+"

viz Greedy quantifiers na https://docs.oracle.com/…Pattern.html

 
Nahoru Odpovědět
21.2.2018 21:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.