Mam takie oto wyrazenie do napisania, z ktorym sobie poradzilem ale czuje ze mozna lepiej:
wyraz nie moze zaczynac sie cyfra ani __ (podwojny podkreslnik), dozwolone male / wielki litery, # oraz $, ma to byc w XSD w znaczniku <pattern> w <restriction> (czyli nie ma np lookahead / lookbehind itp).
Mam takie cos:
|[a-zA-Z#$0-9][_a-zA-Z#$0-9]|[a-zA-Z#$][_a-zA-Z#$0-9]
(trzy 'lub') co mnie troche przeraza. Da sie to (chyba bez straty dokladnosci?) zamienic na nieco krotsze:
|([a-zA-Z#$0-9]|[a-zA-Z#$])[_a-zA-Z#$0-9]*
(2 'lub', z czego drugie ma tez 2 'lub'). Zdaje sie dzialac dla moich testow:
poprawne:
a, ab, a1, _a1af, _1fad334$#$#FS, $aFfsfsFES42$#, #a43sFS3##, $1$$$$####$$$$, #1, #####, $$$$$$$$$, #$#$#$#$#$#, a, a_b, a, a__b, _1, _#, _, _a__b
niepoprawne:
a.b, 1, 12, 1ab, 1v2, one,two three!four&five, __id, __, __w_h_a_t_e_v_e_r
Mam jednak wrazenie ze ten regex da sie duzo latwiej i czytelniej napisac. Czy ktos potrafi pomoc?
Pozdrawiam.