Foros del Web » Creando para Internet » HTML »

Expresión Regular JS para detectar www

Estas en el tema de Expresión Regular JS para detectar www en el foro de HTML en Foros del Web. Hola foro: Tengo un formulario de comentarios, que a pesar de tener un código captcha para poder publicar, podeis verlo aqui [URL="http://http://www.ofideco.eu/pizarra/noticia.php?noticia=14"]http://http://www.ofideco.eu/pizarra/noticia.php?noticia=14[/URL] de vez en ...
  #1 (permalink)  
Antiguo 19/06/2012, 13:40
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 11 años, 11 meses
Puntos: 3
Expresión Regular JS para detectar www

Hola foro:

Tengo un formulario de comentarios, que a pesar de tener un código captcha para poder publicar, podeis verlo aqui [URL="http://http://www.ofideco.eu/pizarra/noticia.php?noticia=14"]http://http://www.ofideco.eu/pizarra/noticia.php?noticia=14[/URL]
de vez en cuando me entran comentarios sin sentido que contienen enlaces a otras web y necesito una expresión regular que detecte si se ha introducido www o http para validarlo en js.

A ver si alguien me hecha una mano
  #2 (permalink)  
Antiguo 20/06/2012, 01:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Expresión Regular JS para detectar www

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. /* script */
  9. function url_en_texto(campo){
  10. var elCampo = document.getElementById(campo).value;
  11. var coincide = elCampo.match( /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/gi);
  12. if(coincide != null){
  13. alert('hay una url');
  14. }
  15. }
  16. //]]>
  17. </head>
  18. <div>
  19. <textarea id="texto" cols="30" rows="5"></textarea>
  20. <br />
  21. <button onclick="url_en_texto('texto');">verificar</button>
  22. </div>
  23. </body>
  24. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 20/06/2012, 14:15
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Expresión Regular JS para detectar www

Hola emprear:

Gracias por la respuesta.

Con la expresión regular solo
/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
me hubiera bastado, ya que tanto el formulario como el archivo js que me lo valida ya los tengo creados, pero seguro que conforme lo has puesto le puede servir a cualquier otro compañero.

Aunque esta expresión si me funciona, no detecta el enlace si solo escribimos como www.loquesea.com sin el http:// delante

Sería correcto así?
Me pueden incluir enlaces en los comentarios sin el http y que funcionen?

Un saludo
  #4 (permalink)  
Antiguo 20/06/2012, 14:26
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Expresión Regular JS para detectar www

He descubierto otro problema (no con la expresión, si no con la forma de validar el comentario) y es que si haces el siguiente comentario

<a href="loquesea.com" title="enlace" target="_blank">enlace</a>

lo acepta sin más problemas, incluyendome un enlace en el comentario (que es lo que quiero evitar)
  #5 (permalink)  
Antiguo 20/06/2012, 16:29
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Expresión Regular JS para detectar www

rodrigus71@
Vos quería una expresión que identificara urls
Esto
http://www.sss.com
ó
http://qqq.xxx.info/algo
son URLs
mientras que esto
emprear.com
ó
foros.emprear.com/css/tooltips
no lo son

sin en un link vos ponés
<a href="dominio.com">link</a>
se va a intentar ubicar la carpeta ú archivo "dominio.com" en la carpeta actual, de ninguna forma representa a http://dominio.com, es decir, son URIs no URLs
para que sea como vos decís bastaría remover
(ftp|http|https):\/\/
de la expresión

Con respecto a si los va a convertir en enlaces, esto no sucederá a menos que vos le des forma a lo que recibiste (tenga o no tenga el http://) para que se convieta en un link
Creo que la única excepción serán los clientes de correo

Si ves el form de redacción de mensajes de FDW vas a ver una opción para convertir o no automaticamente urls en links (y solo para el caso de que pongas http://
Por ejemplo
http://sitio
como ves la expresión de FDW ni siquiera es tan precisa

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 20/06/2012 a las 16:35
  #6 (permalink)  
Antiguo 21/06/2012, 15:32
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Expresión Regular JS para detectar www

Cita:
Iniciado por emprear Ver Mensaje
rodrigus71@
si en un link vos ponés
<a href="dominio.com">link</a>
se va a intentar ubicar la carpeta ú archivo "dominio.com" en la carpeta actual, de ninguna forma representa a [url]http://dominio.com[/url], es decir, son URIs no URLs
Vale, no había caido en el detalle. Yo hacía las pruebas con páginas de mi mismo site, y por eso me funcionaba.

Lo que no termino de entender es que después de haber implementado la validación del mensaje para evitar spam en los comentarios del formulario me ha llegado el siguiente mensaje textualmente

You can make your own mozzarella???!!!! Why have I never heard of this?! How, how how?, <a href="http://www.streetarticles.com/supplements/maqui-berry-the-superfruit-of-2012">maqui berry article</a>, :]]],

y el caso es que si yo intento mandar el mismo texto tal cual, la verificación me avisa de que no puedo incluir enlaces y no me deja publicar. No entiendo como lo hacen!
  #7 (permalink)  
Antiguo 21/06/2012, 16:36
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Expresión Regular JS para detectar www

@rodrigus71
Rebobinemos porque esto ya es algo confuso.
Tenés un textarea en un form que te envía mensajes. Hasta ahí ok, ahora. que es lo que querés hacer si ponen una url en el mensaje
Eliminarla? y procesar el resto del mensaje
o mostrar un mensaje de error diciendo que no se pueden ingresar urls y detener el envío?

En el último ejemplo ya no solo hay una url sino html con un link, para evitar esi tenés que usar strip_tags()

Finalmente. cualquier validación seria debería hacerse en php y no javascript

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 22/06/2012, 07:39
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Expresión Regular JS para detectar www

@emprear

Empiezo desde el principio yo también, tal vez el titulo del tema es un poco confuso.

Tengo un formulario que utilizo para emitir comentarios sobre una noticia.

Las respuestas a este formulario son grabadas en una base de datos mysql y publicadas automáticamente (yo las modero a posteriori y borro las que no proceden).

Puedes ver lo que te digo aqui:
http://www.ofideco.eu/pizarra/noticia.php?noticia=14

El caso es que hace un par de meses empece a recibir comentarios sin sentido como el que te he puesto en el post anterior.

Implementé un código captcha para evitarlo, pero seguían entrando.

El formulario lo valido con JS para comprobar que se rellenan todos los campos y que el mail es válido. Y lo que quería es añadir a esa validación que no se introduzcan urls en el textarea del formulario (si lo hacen sale un error indicandolo y no graba el comentario en mysql)

El caso es que después de introducir la expresión regular que me dijiste en el js de validación (y comprobar que funcionaba) llegó el comentario que te puse anteriormente.
Si intento introducirlo yo me salta la validación hecha en js indicandome que no se pueden introducir enlaces en los comentarios y no me deja seguir, por eso no me explico como a podido pasar.

Quizas tengas razón y deba validar en php antes de grabar en mysql el comentario, si es así abriré otro tema en la sección correcta, ya que no tengo muy claro como hacerlo.

Gracias por tu dedicación, un saludo
  #9 (permalink)  
Antiguo 22/06/2012, 11:48
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Expresión Regular JS para detectar www

Con php no difiere mucho la expresión

Código PHP:
Ver original
  1. <?php
  2. $texto = "HTTP://WWW.COM";
  3. $control_url="/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i";
  4. if(preg_match($control_url,$texto)){
  5. echo "error";
  6. }else{
  7. echo "Ok";
  8. }
  9. ?>

mi sugerencia es que hagas (suponiendo que $texto es la variable que contiene el textarea

$texto = strip_tags($texto);
y luego la expresión regular como indiqué arriba


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 22/06/2012, 16:41
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Expresión Regular JS para detectar www

Gracias emprear:

Modifiqué el archivo php que me grababa los comentarios en la bd y las pruebas de momento parece que funcionan. A ver si consigo que me dejen de entrar esos comentarios spam.

Solo una observación:
Si antes de la expresión regular colocas: $texto = strip_tags($texto);

la canena: pulsa el siguiente <a href="http://www.loquesea.com">enlace</a>
se convierte en: pulsa el siguiente enlace al retirar las etiquetas html
por lo que la validación la dá por correcta al no contener http://

Así que he optado por no incluirla, podría incluirla después de validar y antes de grabar para retirar otras etiquetas, pero en realidad lo que me molestan son los comentarios spam que siempre contienen links

Me ha servido de mucho tu ayuda, Un saludo
  #11 (permalink)  
Antiguo 22/06/2012, 19:44
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Expresión Regular JS para detectar www

Eso es más por una cuestión de seguridad que por otra cosa.
Basicamente hay 2 tipos de envios de comentarios, los moderados y los que son en tiempo real, si los vas a moderar, es decir, lees lo que pusieron y borras o anulas lo que no corresponde, no hay problemas, pero con los otros, y después de haber visto tu página, cualquiera que empiece a poner cosas como <a> <script></script>, etc, lo hace sencillamente para molestar

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 23/06/2012, 08:18
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Expresión Regular JS para detectar www

Te doy toda la razón.

Al final he optado primero por validar que no se hayan introducido urls y luego a eliminar las etiquetas html/php para evitar comentarios como
<script>
alert('mensaje molesto');
</script>

Al final voy a aprender mucho de este post

saludos
  #13 (permalink)  
Antiguo 09/06/2014, 13:55
 
Fecha de Ingreso: junio-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Expresión Regular JS para detectar www

A mi me sirvió esta función para detectar el dominio obtenido de la barra de direcciones:



var direccion= document.URL;
var coincide = direccion.match(/(https?):\/\/+[^\/]*\/{1}/);
alert(coincide);

Etiquetas: js, php, regular, www, formulario
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 22:32.