2012-03-09 18 views
7

Voglio far rispettare chejavascript regex (validazione nome utente)

  1. il cognome ingresso dovrebbe contiene solo i caratteri AZ, az, e -
  2. il nome di login ingresso dovrebbe contiene solo caratteri alfanumerici

Come posso limitare le due regole in javascript?

Di seguito è riportato il mio codice (jsp) per nome utente regex. Ma non funziona correttamente.

function validateForm(){ 
    var nameRegex = /^[a-zA-Z\-]+$/; 
    var validfirstUsername = document.frm.firstName.value.match(nameRegex); 
    if(validUsername == null){ 
     alert("Your first name is not valid. Only characters A-Z, a-z and '-' are acceptable."); 
     document.frm.firstName.focus(); 
     return false; 
    } 
} 

Grazie!

+0

Qual è la differenza tra * nome utente * e * accesso *? Inoltre, cosa c'è di sbagliato in ciò che hai (oltre alla denominazione incoerente)? –

+0

@JasonMcCreary Uno è firstname e l'altro è il nome di accesso. Usando il codice sopra, se uso horatio2m come input di primo nome, l'utente può ancora essere salvato, che non è quello che voglio. Voglio verificare che l'input firstname contenga solo a-z, A-Z, e ​​- –

+1

Sostituisci 'if (validUsername == null) {' con 'if (validfirstUsername == null) {'. –

risposta

14

Il codice che hai sembra buono, a parte il riferimento variabile incoerente (vedi il commento di Josh Purvis).

La seguente espressione regolare è bene per il vostro nome spec:

var nameRegex = /^[a-zA-Z\-]+$/; 

Aggiunta di cifre per il vostro controllo nome utente è semplice:

var usernameRegex = /^[a-zA-Z0-9]+$/; 

Nota: Ci sono molti modi per scrivere le espressioni regolari . Ho scelto di fornire una versione che corrisponda a ciò che hai iniziato. Vi incoraggio a lavorare su questo Regular Expression Tutorial

+1

Posso usare/[a-zA-Z \ -]/invece di/^ [a-zA-Z \ -] + $ /? Perché dobbiamo usare^di fronte a [a-zA-Z \ -]? –

+2

^significa Trova la posizione iniziale all'interno della stringa – Neo

+0

'^' indica l'inizio della stringa. '$' significa la fine. Se hai lasciato il '' ', ad esempio,' ~ @ * ## @ horatio' passerebbe la tua convalida. Allo stesso modo per il '$' e la fine della stringa controllata. –