Permalänk
Medlem

Regex (C#)

Hej!

Jag har en sträng som jag vill validera, men kan inte få stil på mitt regex.

Tanken är att mitt regex ska säga ifrån om strängen innehåller något annat än följande: a-z, A-Z, 0-9, (, ), !, ~, *, +, /, %, -, , <<, >>, &, | och ^

Just nu itererar jag genom hela strängen och validerar varje tecken med följande röriga uttryck:
[a-z]|[A-Z]|[0-9]| |\(|\)|!|~|/|%|-|&|<{2}|>{2}|\*|\+|\||\^

Vilket förvisso fungerar rätt väl, men problemet är att jag inte kan validera 'större än' och 'mindre än' (bit shift) tecknena eftersom jag skickar in ett tecken i taget. Bäst vore om jag kunde ta hela strängen på en gång istället för ett tecken i taget. Men gör jag det så accepterar mitt regex hela strängen så fort den stöter på ett enda tecken som är giltigt, t.ex. skulle "a 1 + ¤" vara giltigt även fast ¤ inte ingår i teckenuppsättningen.

Alla förslag välkomnas varmt!

Visa signatur

AMD Athlon 64 3k+, ASUS A8N-SLI deluxe, NVIDIA GeForce 6200 TurboCache, Q-TEC PSU 650W, NVIDIA nForce nätverkskort, SB Audigy 2, 2 x 1GB Corsair PC3000 DDR-SDRAM, WD Raptor 36.7GB SATA 8MB 10k RPM och Maxtor 200GB SATA

Permalänk
Medlem

Nu kommer jag inte ihåg regex exakt och ärligt så vill jag inte komma igåd det heller tills jag är tvungen, men jag vet att du kan validera hela strängar så som du egentligen vill så du får kolla genom din kod.

Visa signatur

En Laptop

Permalänk
Hedersmedlem

borde inte något liknande detta fungera?
^([a-zA-Z0-9()!~\*\+/%-&\|\^]|<<|>>)*$

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Elgot
borde inte något liknande detta fungera?
^([a-zA-Z0-9()!~\*\+/%-&\|\^]|<<|>>)*$

Regex Coach godkände den i alla fall.

http://www.weitz.de/regex-coach/ <-- ftw.

Permalänk
Medlem

Behövde bara lägga till escape på paranteserna och minustecknet, och flytta mellanslaget innanför hakparanteserna på det uttrycket, sen fungerade det som jag ville.

Många tack!

Visa signatur

AMD Athlon 64 3k+, ASUS A8N-SLI deluxe, NVIDIA GeForce 6200 TurboCache, Q-TEC PSU 650W, NVIDIA nForce nätverkskort, SB Audigy 2, 2 x 1GB Corsair PC3000 DDR-SDRAM, WD Raptor 36.7GB SATA 8MB 10k RPM och Maxtor 200GB SATA