Foros del Web » Programando para Internet » PHP »

preg_match para nombre de usuario

Estas en el tema de preg_match para nombre de usuario en el foro de PHP en Foros del Web. Holas, necesito un buen preg_match para que el nombre de usuario pueda contener solo letras de la " a " a la " z ", ...
  #1 (permalink)  
Antiguo 04/04/2010, 01:08
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 1
preg_match para nombre de usuario

Holas, necesito un buen preg_match para que el nombre de usuario pueda contener solo letras de la "a" a la "z", que se puedan usar espacios, por supuesto, y el unico caracter especial que se pueda usar sea el guion medio "-". Tambien que un nombre no pueda ser todo en mayuscula, por ejemplo "CARLOS". Lo de la primera letra en mayuscula ya lo arregle con un ucfirst() pero como no estoy muy familiarizado con el preg_match no se como hacer el resto.

Por ejemplo, nombres que estan correctos:

Dark-Math
pepito (que pasa a ser Pepito)
Carlos el grande

Nombres que estan incorrectos:

JUAN
Dark_Math

Por ahora lo unico que pude hacer fue esto:

if (preg_match("/^[-A-Z\s]+$/i", $username)) {

El "\s" ya estaba ahi porque lo saque de otro script pero no estoy seguro de su funcion, si alguien me podria decir para que sirve le agradeceria.
  #2 (permalink)  
Antiguo 04/04/2010, 02:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match para nombre de usuario

te sugiero leer lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/

ya que no se trata de algún "preg_match", es mas bien... una expresión regular... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/04/2010, 12:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: preg_match para nombre de usuario

Okas, gracias :D
  #4 (permalink)  
Antiguo 04/04/2010, 13:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: preg_match para nombre de usuario

Hola.
Creo que la expresión regular que buscas sería algo así:

1º La primera letra siempre en mayúsculas:

Código PHP:
[A-ZÑÁÉÍÓÚÜ
para que sea sólo una letra

Código PHP:
(A-ZÑÁÉÍÓÚÜ){1
2º para el resto de letras del usuario:

Código PHP:
(A-ZÑÁÉÍÓÚÜa-zñáéíóúü-)* 
3º juntándolo todo, la expresión regular quedaría:

Código PHP:
(A-ZÑÁÉÍÓÚÜ){1}(A-ZÑÁÉÍÓÚÜa-zñáéíóúü-)* 
Como ves he incluido los acentos, la ñ y la u con diéresis. Espero que te sirva. Yo usaría eregi en vez de preg_match (aunque también se puede usar, cuestión de gustos).
Saludos
  #5 (permalink)  
Antiguo 04/04/2010, 14:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match para nombre de usuario

Cita:
Iniciado por pablitino Ver Mensaje
[...] Como ves he incluido los acentos, la ñ y la u con diéresis. Espero que te sirva. Yo usaría eregi en vez de preg_match (aunque también se puede usar, cuestión de gustos).
Saludos
en todo caso la mayoría de tus expresiones son incorrectas... ya que estas usando paréntesis en lugar corchetes cuadrados...

y también -deberías saber- EREG esta obsoleto... y se recomienda usar siempre PCRE ... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 04/04/2010, 15:07
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: preg_match para nombre de usuario

Cita:
Iniciado por pateketrueke Ver Mensaje
en todo caso la mayoría de tus expresiones son incorrectas... ya que estas usando paréntesis en lugar corchetes cuadrados...

y también -deberías saber- EREG esta obsoleto... y se recomienda usar siempre PCRE ... ;)
Cierto, en la primera puse los [] correctamente en las otras me equivoqué y puse ().

No sabía que eregi estaba obsoleto... me tengo que actualizar un poco. Gracias, saludos.
  #7 (permalink)  
Antiguo 04/04/2010, 23:22
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: preg_match para nombre de usuario

Gracias pablitino, eso es mas o menos lo que intente yo, pero creo que aun de esa manera el nombre de usuario puede ser CARLOS (todo en mayuscula).
Lo que quiero es que solo la primera letra de cada palabra pueda ser mayuscula, el resto no.

Etiquetas: nombre, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.