Foros del Web » Programando para Internet » PHP »

(?!) en expresiones regulares

Estas en el tema de (?!) en expresiones regulares en el foro de PHP en Foros del Web. Tengo el siguiente código function valido($url) { if (preg_match("/^(http:\/\/www\.sitio\.com\/index\.php\?option=com_content&view=article&id=[0-9]+\:[^\/ ]+[?!\#addcomments])$/", $url)) return 'true<br>'; else return 'false<br>'; } echo valido("http://www.sitio.com/index.php?option=com_content&view=article&id=1695: lopez&catid=3:la-provincia&Itemid=3"); echo valido("http://www.sitio.com/index.php?option=com_content&view=article&id=1695: lopez&catid=3:la-provincia&Itemid=3#addcomments"); echo valido("akjsaksjalk"); ...
  #1 (permalink)  
Antiguo 12/09/2010, 18:23
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
(?!) en expresiones regulares

Tengo el siguiente código

function valido($url)
{
if (preg_match("/^(http:\/\/www\.sitio\.com\/index\.php\?option=com_content&view=article&id=[0-9]+\:[^\/ ]+[?!\#addcomments])$/", $url))
return 'true<br>';
else
return 'false<br>';
}

echo valido("http://www.sitio.com/index.php?option=com_content&view=article&id=1695: lopez&catid=3:la-provincia&Itemid=3");

echo valido("http://www.sitio.com/index.php?option=com_content&view=article&id=1695: lopez&catid=3:la-provincia&Itemid=3#addcomments");

echo valido("akjsaksjalk");

La idea es que me capture una direccion url sin el #addcomments al final. El resultado de la evaluación del ejemplo anterior me tendria que dar true-false-false pero me sale false-true-false...

alguien me puede dar una mano?
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #2 (permalink)  
Antiguo 12/09/2010, 21:03
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: (?!) en expresiones regulares

Es que pusiste el ?! dentro de corchetes, así que la buscará cualquier URL que contenga #addcomments y que posiblemente contenga algún ? o !. Así que debes ponerlo entre paréntesis.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 13/09/2010, 06:35
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: (?!) en expresiones regulares

if (preg_match("/^(http:\/\/www\.sitio\.com\/index\.php\?option=com_content&view=article&id=[0-9]+\:[^\/ ]+(?!\#addcomments))$/", $url))

Lo probé nuevamente y ahora el resultado es true - true - false, y sigue siendo erroneo
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #4 (permalink)  
Antiguo 13/09/2010, 07:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: (?!) en expresiones regulares

Trata usando [^#addcomments].
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 14/09/2010, 12:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: (?!) en expresiones regulares

Excelente! gracias abimaelrc!
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs

Etiquetas: expresiones, regulares
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 02:49.