PDA

View Full Version : [ASP] Espressione regolare mi fa impazzire!


RobyG_08
19-05-2010, 09:32
Ciao a tutti,

sto impazzendo dietro una reg exp che mi deve controlare un campo immesso dall'utente. In particolare può contenere solo lettere o numeri (e fin qui), ma deve contenere almeno una lettera e almeno un numero, es:

aaaaa NO
1aaaa SI
a1a1a SI
2222a SI
22222 NO

come diavolo si fa? c'è l'operatore OR ma non c'è l'operatore AND, o sbaglio?

Grazie a chiunque mi aiuti

shinya
19-05-2010, 09:41
Umh... non l'ho testata... cosi a naso...
([A-Za-z]+[0-9]+|[0-9]+[A-Za-z]+)
Non conosco la sintassi delle regex di ASP... va bene cosi?

RobyG_08
19-05-2010, 09:50
Grazie per la risposta,

però così non va, perchè accetta solo

22aa oppure aa22, ma non a2a2 oppure a2aa per esempio

shinya
19-05-2010, 09:59
Grazie per la risposta,

però così non va, perchè accetta solo

22aa oppure aa22, ma non a2a2 oppure a2aa per esempio

Hai ragione...e cosi?
([A-Za-z]+[0-9]+|[0-9]+[A-Za-z]+).*

edit: scusa, mi sono ricordato che possono essere solo lettere e/o numeri... quindi non sarà ".*" ma "[A-Za-z0-9]*"...o quello che è in ASP.

RobyG_08
19-05-2010, 10:13
Così funziona (con .*, con solo *no)! Grazie!

Mi spieghi cosa cambia col .*? Cioè . non sta per tutti i caratteri e * per zero o più occorrenze?

EDIT e se volessi che la stringa in totale sia lunga da 3 a 10? {3,10}?

shinya
19-05-2010, 10:20
Così funziona (con .*, con solo *no)! Grazie!

Mi spieghi cosa cambia col .*? Cioè . non sta per tutti i caratteri e * per zero o più occorrenze?

Si esatto. Ma non devi mettere solo *, e .* non va bene perchè tu vuoi che la stringa sia composta solo da numeri e lettere.
Sostituisci .* con [A-Za-z0-9]* e bon.

MaxArt
20-05-2010, 00:42
Bueno, se interessano le performance si può migliorare leggermente:
(?:[A-Za-z]+\d|\d+[A-Za-z])[A-Za-z0-9]*