2012-03-09 23 views
7

Quiero hacer cumplir esaJavascript expresiones regulares (validación de nombre de usuario)

  1. el apellido de entrada sólo debe contiene caracteres AZ, az y -
  2. el nombre de inicio de sesión de entrada sólo debe contiene caracteres alfanuméricos

¿Cómo restrinjo las dos reglas en javascript?

A continuación se muestra mi código (jsp) para el nombre de usuario regex. Pero no está funcionando correctamente.

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; 
    } 
} 

¡Gracias!

+0

¿Cuál es la diferencia entre * username * y * login *? Además, ¿qué hay de malo con lo que tienes (aparte de nombres incoherentes)? –

+0

@JasonMcCreary Uno es firstname y el otro es nombre de usuario. Usando el código anterior, si uso horatio2m como entrada de primer nombre, el usuario aún puede ser guardado, que no es lo que quiero. Quiero validar que la entrada de primer nombre solo debe contener a-z, A-Z y - –

+1

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

Respuesta

14

El código que tiene se ve bien, aparte de la referencia variable incoherente (vea el comentario por Josh Purvis).

La siguiente expresión regular está muy bien para su nombre de pila especificaciones:

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

Adición de dígitos para su verificación nombre de usuario es sencillo:

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

Nota: Hay muchas formas de escribir expresiones regulares . He elegido proporcionar una versión que coincida con lo que comenzó. Le recomiendo que trabaje a través de este Regular Expression Tutorial

+1

¿Puedo usar/[a-zA-Z \ -]/en lugar de/^ [a-zA-Z \ -] + $ /? ¿Por qué tenemos que usar^delante de [a-zA-Z \ -]? –

+2

^significa Coincide con la posición de inicio dentro de la cadena – Neo

+0

'^' significa el comienzo de la cadena. '$' significa el final. Si dejó el '^', por ejemplo, '~ @ * ## @ horatio' pasaría su validación. Del mismo modo para el '$' y el final de la cadena que se verifica. –

Cuestiones relacionadas