Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

hosting en interdominios
1.096 lecturas y 11 respuestas
  • [Editado]

    Boca de Pez Boca de Pez
    6

    Coincidencia negativa con una palabra en una expresión regular.

    Hola buenas:

    A ver si me podeis hechar una mano, estoy trabajando con Javascript y necesito una expresión regular que conicida con el tag strong siempre que en su interior no haya un tag de cierre span, algo como:

    /[^<\/span>]{1,}<\/strong>/

    Solo que en este caso al declarar un rango solo con que haya una s ya coincidirá y yo quiero que coincida con el tag entero y no se hacerlo, ¿alquien me ayuda? Gracias.

    Este tema lleva más de 6 meses inactivo. Es recomendable que abras un nuevo tema para retomar la conversación.
      • Había leído conciencia negativa :P Por lo de las negritas, no…

        Había leído conciencia negativa :P

        Por lo de las negritas, no te preocupes. Solo si lo deseas, te lo edito y las quito, pero tampoco es necesario. ;)

        ¿Exactamente que deseas?

        ¿Que te muestre solo el contenido del tag mientras no haya un span? ¿O que muestre el tag y el contenido mientras no exista el span? Imagino que solo el contenido.

        Aunque creo, que sabes que el cierre de span puede situarse después del cierre de strong. ¿Lo que quieres verificar, siempre cumple que el cierre de span está antes del contenido sin otro tag?

        También puedes hacer pruebas en esta página.

        Saludos.

        • [Editado]

          Boca de Pez Boca de Pez
          6

          Me explico mejor: de el código que tengo que tratar quiero…

          Me explico mejor: de el código que tengo que tratar quiero extraer un array con las etiquetas y contenido de las etiquetas strong siempre que estas no tengan un tag de cierre span en su interior, que no coincida con esto:

          hola

          Pero que coincida con esto:

          hola

          lo que hago es:

           string.match(/[^<\/span>]{1,}<\/strong>/g)

          pero no es correcto porque si tengo una s o una p o un<... no me coincide porque he declarado un rango no un literal y no tengo claro como hacerlo. Ah! deve funcionar en firefox en el resto de navegadores me da igual. No se si me he esplicado bien, gracias.

          • Boca de Pez Boca de Pez
            6
            me ha vuelto a pasar! cuando le doy a vista previa no me sale…

            me ha vuelto a pasar! cuando le doy a vista previa no me sale en negrita la ultima fila.

            bueno las expresiones serian (los espacios son para que no me elimine el código):

            < strong>hola< /span>< /strong>
            < strong>hola< span>< /strong>
             string.match(/< strong>[^<\/span>]{1,}<\/strong>/g)
        • Boca de Pez Boca de Pez
          6

          Buenas... Efectivamente hay que hacer uso del negative…

          Buenas...

          Efectivamente hay que hacer uso del negative lookahead. La que te dejo a continuación debería servirte:

           /* Coincide con un cadena delimitada pory  que no contenga la subcadena */
          
          /((?!<\/span>).)*?<\/strong>/

          Saludos.

          • Boca de Pez Boca de Pez
            6
            Se ha fastidiado un poco al postear... A ver si ahora sí…

            Se ha fastidiado un poco al postear... A ver si ahora sí (eliminar el underscore posterior al primer parentesis angular en cada tag):

             /* Coincide con un cadena delimitada por<_strong>y<_/strong> que no contenga la subcadena<_/span>)
            */
            
            <_strong>((?!<\/span>).)*?<\/strong>

            Saludos.