PDA

View Full Version : [Javascript] Controlli caratteri consentiti


Fede 88
07-11-2009, 20:21
In una form di registrazione ho due input type (Città e Username), come controlli ho già messo:

Username:
- Controllo se è vuoto;
- La lunghezza deve essere comrpesa tra 4-16 caratteri

Città:
- Controllo se è vuoto;


Secondo voi quali altri controlli sarebbe meglio mettere?

vhost87
07-11-2009, 20:29
Che la città non contenga numeri :) o caratteri particolari (#*@*ecc...)

Fede 88
07-11-2009, 20:51
Per l'username pensavo di non permettere gli spazi, e anche qualche simbolo come ()/\|"'^*, anzi più che altro eliminerei tutti i simboli a parte alcuni, tipo _

Fede 88
08-11-2009, 11:46
Ho un problema per la creazione dei caratteri accettati per la città.

Questo è il codice che uso per l'email:

var espressione = /^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
if (!espressione.test(document.registrazione.email.value)) { ... ...
} else { ... ... }


Non riesco a capire come adattarlo per controllare che la città:
- Non inizi con uno spazio;
- Contenga solo lettere (no numeri e simboli).

In internet trovo solo esempi del controllo mail...

Qualcuno mi potrebbe aiutare. Grazie

MEMon
08-11-2009, 11:56
Ho un problema per la creazione dei caratteri accettati per la città.

Questo è il codice che uso per l'email:

var espressione = /^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
if (!espressione.test(document.registrazione.email.value)) { ... ...
} else { ... ... }


Non riesco a capire come adattarlo per controllare che la città:
- Non inizi con uno spazio;
- Contenga solo lettere (no numeri e simboli).

In internet trovo solo esempi del controllo mail...

Qualcuno mi potrebbe aiutare. Grazie

^\s+|[^A-z ']

Consente l'apostrofo e lo spazio all'interno del nome.

Fede 88
08-11-2009, 12:05
Grazie, per caso sai dove posso trovare una guida che spiega come funziona in generale.

Perchè non mi è ben chiaro il funzionamento, cioè ora come ora non sarei in grado di creare un altro controllo.

MEMon
08-11-2009, 12:06
Certo ecco qui http://www.regular-expressions.info/tutorial.html

Fede 88
08-11-2009, 12:38
Grazie, guida molto utile...

Fede 88
08-11-2009, 13:08
^\s+|[^A-z ']

Consente l'apostrofo e lo spazio all'interno del nome.

Ho provato il suddetto codice ma non mi funziona, quindi ne ho provato a creare uno io in questo modo:


/^[a-zA-Z '-]+$/;


Così funziona, l'unica cosa che manca è il controllo sul primo carattere che deve essere per forza una lettera e non uno spazio o l'apostrofo.

MEMon
08-11-2009, 13:11
Il mio funziona perfettamente, va usato così

if(!/^\s+|[^A-z ']/.test(value)) //allora è ok

Fede 88
08-11-2009, 13:24
Il fatto è che io lo faccio in questo modo:

var struttura_città = ...;
if (!struttura_città.test(document.registrazione.città.value)) {


Se inserisco la tua stringa nella variabile mi da sempre errore, mentre quella cha faccio io no. Non capisco il motivo...

Fede 88
08-11-2009, 15:06
Corretto, non avevo letto che la tua funziona quand'è uguale, la mia faceva l'opposto.

Per la lunghezza cosa mi consigli? 2-30?

MEMon
08-11-2009, 15:13
Se vuoi mettere un limite massimo 30 è accettabile quasi sempre, curiosità la città col nome più lungo del mondo è questa Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch :p

MEMon
08-11-2009, 15:21
Se vuoi fare tutto in un controllo potresti fare una cosetta del genere

var struttura_città =/[A-z][A-z ']{1,29}/;
if(document.registrazione.città.value.replace(struttura_città,"").length){
//valore non accettabile
}
else{
//valore ok
}

Fede 88
08-11-2009, 15:32
Se vuoi fare tutto in un controllo potresti fare una cosetta del genere

var struttura_città =/[A-z][A-z ']{1,29}/;
if(document.registrazione.città.value.replace(struttura_città,"").length){
//valore non accettabile
}
else{
//valore ok
}


Grazie per il consiglio, però preferisco farli separati in podo da indicare all'utente il motivo del avviso.

Fede 88
08-11-2009, 15:34
Se vuoi mettere un limite massimo 30 è accettabile quasi sempre, curiosità la città col nome più lungo del mondo è questa Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch :p

:eek: hahaha, ma è un nome mostruosamente lungo e soprattutto impronunciabile...