Saltar al contenido

Expresión regular para letras, números y – _

Solución:

El patrón que desea es algo como (véalo en rubular.com):

^[a-zA-Z0-9_.-]*$

Explicación:

  • ^ es el comienzo del ancla de línea
  • $ es el final de la línea de anclaje
  • [...] es una definición de clase de carácter
  • * es una repetición “cero o más”

Tenga en cuenta que el guión literal - es el último carácter en la definición de la clase de caracteres; de lo contrario, tiene un significado diferente (es decir, rango). los . también tiene un significado diferente fuera de las definiciones de clases de caracteres, pero en el interior, es solo un literal .

Referencias

  • regular-expressions.info/Anchors, clases de caracteres y repetición

En PHP

Aquí hay un fragmento para mostrar cómo puede usar este patrón:

<?php

$arr = array(
  'screen123.css',
  'screen-new-file.css',
  'screen_new.js',
  'screen new file.css'
);

foreach ($arr as $s) {
  if (preg_match('/^[w.-]*$/', $s)) {
    print "$s is a matchn";
  } else {
    print "$s is NO match!!!n";
  };
}

?>

Las impresiones anteriores (como se ve en ideone.com):

screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!

Tenga en cuenta que el patrón es ligeramente diferente, usando w en lugar de. Esta es la clase de carácter para “carácter de palabra”.

Referencias de API

  • preg_match

Nota sobre la especificación

Esto parece seguir su especificación, pero tenga en cuenta que esto coincidirá con cosas como ....., etc., que puede ser o no lo que desea. Si puede ser más específico con el patrón que desea hacer coincidir, la expresión regular será un poco más complicada.

La expresión regular anterior también coincide con la cadena vacía. Si necesita al menos un carácter, utilice + (uno o más) en lugar de * (cero o más) para repetición.

En cualquier caso, puede aclarar aún más su especificación (siempre ayuda cuando hace una pregunta de expresiones regulares), pero con suerte también puede aprender a escribir el patrón usted mismo dada la información anterior.

puedes usar

^[w.-]+$

los + es asegurarse de que tenga al menos 1 carácter. Necesita el ^ y $ para denotar el comienzo y el final, de lo contrario, si la cadena tiene una coincidencia en el medio, como @@@@xyz%%%% entonces sigue siendo un partido.

w ya incluye alfabetos (mayúsculas y minúsculas), números y guiones bajos. Entonces el resto ., -, simplemente se colocan en la “clase” para que coincidan. los + significa 1 ocurrencia o más.

PD gracias por la nota en el comentario.

Para cubrir realmente su patrón, es decir, nombres de archivo válidos de acuerdo con sus reglas, creo que necesita un poco más. Tenga en cuenta que esto no coincide con los nombres de archivo legales de un sistema perspectiva. Eso dependería del sistema y sería más liberal en lo que acepta. Esto está destinado a coincidir con sus patrones aceptables.

^([a-zA-Z0-9]+[_-])*[a-zA-Z0-9]+.[a-zA-Z0-9]+$

Explicación:

  • ^ Coincide con el comienzo de una cadena. Esto (más la coincidencia final) obliga a la cadena a ajustarse a la expresión exacta, no a contener simplemente una subcadena que coincida con la expresión.
  • ([a-zA-Z0-9]+[_-])* Cero o más apariciones de una o más letras o números seguidos de un guión bajo o guión. Esto hace que todos los nombres que contienen un guión o un guión bajo tengan letras o números entre ellos.
  • [a-zA-Z0-9]+ Una o más letras o números. Esto cubre todos los nombres que no contienen un guión bajo ni un guión.
  • . Un punto literal (punto). Obliga a que el nombre del archivo tenga una extensión y, por exclusión del resto del patrón, solo permite que se use el punto entre el nombre y la extensión. Si desea más de una extensión que pueda manejarse también usando la misma técnica que para el guión / guión bajo, solo al final.
  • [a-zA-Z0-9]+ Una o más letras o números. La extensión debe tener al menos un carácter y solo debe contener letras y números. Esto es típico, pero si quisiera permitir guiones bajos, también podría solucionarse. También puede proporcionar un rango de longitud {2,3} en lugar de uno o más + matcher, si eso fuera más apropiado.
  • $ Coincide con el final de la cuerda. Vea el personaje inicial.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *