"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo mejorar mi expresión regular para que coincida con las URL de manera más efectiva?

¿Cómo puedo mejorar mi expresión regular para que coincida con las URL de manera más efectiva?

Publicado el 2024-12-14
Navegar:331

How Can I Improve My Regular Expression to Match URLs More Effectively?

Expresión regular mejorada para URL coincidentes

Al intentar detectar y analizar URL a partir de la entrada del usuario, es fundamental utilizar una expresión regular eficaz. En su caso, si bien su expresión actual captura algunos formatos de URL, no tiene en cuenta las URL que carecen de un esquema de protocolo explícito, como www.google.com.

Expresión regular revisada

Para solucionar este problema y garantizar una coincidencia completa de URL, considere utilizar la siguiente versión regular revisada expresión:

^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

Anatomía de la expresión regular

  • Anclas: Garantiza que la partida comience y finaliza la cadena completa.
  • Protocolo (opcional): captura el protocolo opcional "http" o "https" esquema.
  • Dominio: Coincide con el nombre de dominio, incluidos los subdominios y el dominio de nivel superior.
  • Puerto: captura el número de puerto opcional (p. ej. , ":8080").
  • Ruta: captura cualquier información de ruta después del dominio (por ejemplo, "/index.html").
  • Consulta: captura los parámetros de la cadena de consulta (p. ej., "?name=John").
  • Fragmento: captura el identificador del fragmento (por ejemplo, "#pie de página").

Esta expresión regular revisada es menos restrictiva y coincidirá correctamente con URL como www.google.com, así como aquellos con protocolos explícitos (por ejemplo, http://www.stackoverflow.com).

Ejemplo de implementación (JavaScript)

const regex = new RegExp(/(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)g);
const url = 'www.google.com';

if (url.match(regex)) {
  console.log("URL successfully matched.");
} else {
  console.log("URL did not match.");
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3