Necesito ayuda para construir una expresión regular para preg_match
de acuerdo con estas reglas:
- Primer y último carácter / dígito solamente.
- espacio vacío no permitido
- char puede ser solo - letra / dígito / "-" / "_" / "."
Ejemplos legales:
- b.t612_rt
- rut-be
- rut7565
Ejemplo no legal:
- .btr78; btr78- (primero / últimos caracteres permitidos)
- inicio fin; inicio fin; (cualquier espacio vacío)
- tr $ be; tr * rt; tr / tr ... (caracteres no permitidos)
Edición: elimino la regla 4 con los caracteres "_" "-" ".
por favor, ayúdame.
Gracias
Respuestas
3 para la respuesta № 1Prueba esta expresión regular:
^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*$
Esto coincide con cualquier secuencia que comience con al menos una letra o un dígito (^[A-Za-z0-9]+
) que pueden ir seguidas de cero o más secuencias de una de -
, _
, o .
([-_.]
) que debe ir seguido de al menos una letra o dígito ([A-Za-z0-9]+
)
2 para la respuesta № 2
Prueba esto:
^[p{L}p{N}][p{L}p{N}_.-]*[p{L}p{N}]$
En PHP:
if (preg_match(
"%^ # start of string
[p{L}p{N}] # letter or digit
[p{L}p{N}_.-]* # any number of letters/digits/-_.
[p{L}p{N}] # letter or digit
$ # end of the string.
%xu",
$subject)) {
# Successful match
} else {
# Match attempt failed
}
Longitud mínima de la cadena: dos caracteres.
1 para la respuesta № 3
Esto parece funcionar bien para los ejemplos proporcionados: $patt = "/^[a-zA-Z0-9]+([-._][a-zA-Z0-9]+)*$/";
1 para la respuesta № 4
Bueno, para cada una de tus reglas:
Primera y última letra / dígito:
^[a-z0-9]
y
[a-z0-9]$
espacio vacío no permitido (no se necesita nada, ya que estamos "haciendo una coincidencia positiva y no permitimos ningún espacio en blanco en ninguna parte):
Sólo letras / dígitos / - / _ /.
[a-z0-9_.-]*
No hay símbolos vecinos:
(?!.*[_.-][_.-])
Así que, todos juntos:
/^[a-z0-9](?!.*[_.-][_.-])[a-z0-9_.-]*[a-z0-9]$/i
Pero con todas las expresiones regulares, hay múltiples soluciones, así que pruébalo ...
Edición: para su edición:
/^[a-z0-9][a-z0-9_.-]*[a-z0-9]$/i
Simplemente elimine la sección de la regla que desea cambiar / remoto. es fácil...