Dúvida expressão regular com url

  • Autor Autor Steeep
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Steeep

Steeep

Delta
Social Media
Verificación en dos pasos activada
Buenas dando vuelta me pille con una expresión regular que quiero adaptar a mi gusto para algo.

Tengo el siguiente código:

PHP:
$url = 'http://forobeta.com/';

if(preg_match('/((?:http|https)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s"]*))/is', $url)) {
	echo "URL";
}
else {
	echo "No URL";
}

Y lo que pasa es que si en la variable $url pongo http://forobe me lo sigue tomando como que es un URL completa.

Pero lo que necesito es que escriba una URL completa & no hasta la mitad, o sea que cumpla todas la condiciones juntas.

Como lo puedo hacer? Alguna ayuda?

Saludos, gracias de antemano.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
prueba con

PHP:
preg_match('/^(http|https)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)
 
Prueba con este:
PHP:
$url = 'http://forobeta.com/';
if(preg_match("/^(http:\/\/|https:\/\/)?(www\.)?[a-z0-9]+[a-z0-9-]*\.(com|net|org|info)/i", $url)){
	echo "Url correcta: " . $url;
}else {
	echo "url incorrecta: " . $url;
}

Claro que seria con las extenciones que tiene ahi (.com, .net, .org, .info) seria cuestion de agregarle las que quieras que acepte 😀

Y por cierto alguien sabe que significa ?: o ?= ?

Saludos!!
 
Última edição:
PHP:
if( filter_var($url, FILTER_VALIDATE_URL) ) {
    echo 'URL';
} else {
    echo 'No url';
}
 
Prueba con este:
PHP:
$url = 'http://forobeta.com/';
if(preg_match("/^(http:\/\/|https:\/\/)?(www\.)?[a-z0-9]+[a-z0-9-]*\.(com|net|org|info)/i", $url)){
	echo "Url correcta: " . $url;
}else {
	echo "url incorrecta: " . $url;
}

Claro que seria con las extenciones que tiene ahi (.com, .net, .org, .info) seria cuestion de agregarle las que quieras que acepte 😀

Y por cierto alguien sabe que significa ?: o ?= ?

Saludos!!

En las expresiones regulares cuando pones algo entre parentesis quiere decir que queres capturar lo que matchea con esa seccion en un grupo.
Por ejemplo (\w+) esto va a matchear todo lo que sea letras mas de una vez y lo va a guardar en un grupo.
El operador ?: sirve para indicar que no queres guardar ese grupo.
Por ejemplo (?:\w+) va a matchear lo mismo que el ejemplo anterior pero no va a guardar el grupo. En este ejemplo no tiene mucho sentido usarlo asi, si no queres guardar el grupo no pones los parentesis y listo, pero lo de armar grupos y no guardarlos sirve para cuando queres usar un OR o poner que algo es opcional.
Por ejemplo (?:div|span) eso va a matchear contra div o contra span y no va a guardar el grupo.
Tambien puede ser para indicar que algo puede estar o no de esta forma (?:div)? ahi estas indicando que toda la palabra div puede estar o no y no guardas el grupo.
 
En las expresiones regulares cuando pones algo entre parentesis quiere decir que queres capturar lo que matchea con esa seccion en un grupo.
Por ejemplo (\w+) esto va a matchear todo lo que sea letras mas de una vez y lo va a guardar en un grupo.
El operador ?: sirve para indicar que no queres guardar ese grupo.
Por ejemplo (?:\w+) va a matchear lo mismo que el ejemplo anterior pero no va a guardar el grupo. En este ejemplo no tiene mucho sentido usarlo asi, si no queres guardar el grupo no pones los parentesis y listo, pero lo de armar grupos y no guardarlos sirve para cuando queres usar un OR o poner que algo es opcional.
Por ejemplo (?:div|span) eso va a matchear contra div o contra span y no va a guardar el grupo.
Tambien puede ser para indicar que algo puede estar o no de esta forma (?:div)? ahi estas indicando que toda la palabra div puede estar o no y no guardas el grupo.

Si, ya estuve leyendo algo de eso (que ocupaba usar expresiones regulares y nunca las habia usado :topsy_turvy🙂, Gracias :encouragement:

Saludos!!
 
Voltar
Topo