2012-04-10 7 views
11

Estoy tratando de obtener una expresión de expresiones regulares para aceptar < y> como mis delimitadores externos para captar todo el contenido entre ellos.¿Los corchetes angulares (< or >) son especiales en una expresión regular?

por lo contenidos como tales

<tfdsfa> 

debe ser tomado.

¿Tengo que escapar del < y> caracteres o algo así?

expresión regular generada por mi guión:

/<[^(>)]*>/g 

Código de archivo:

data.method.highlight = function() { 
    var x = data.syntax, 
     text = data.$.span.html(); 
    for (var i=0, len = x.length; i < len; i++) { 
     var rx; 
     if (x[i].range) { 
      rx = new RegExp(x[i].tag[0] + "[^(" + x[i].tag[1] + ")]*" + x[i].tag[1], "g"); 
      console.log(rx); 
     } 
     else { 
      var temprx = x[i].tag[0]; 
      for (var z = 1; z < x[i].tag.length; z++) { 
       temprx += "|" + x[i].tag[z]; 
      } 
      rx = new RegExp(temprx, "g"); 
     } 
     text = text.replace(rx,function (match) { 
      console.log("looping - range"); 
      return '<span class="' + x[i].class.default + '">' + match + '</span>'; 
     }); 
     data.$.span.html(text); 
    } 
}; 
+9

Su regex funciona. ¿Qué es exactamente lo que no logras? –

+0

Utilice esta herramienta cada vez que desarrolle expresiones regulares: http://gskinner.com/RegExr/ –

+0

¿Puede mostrar cómo está utilizando esta expresión? – MilkyWayJoe

Respuesta

16

Ni < ni > son meta-caracteres dentro de una expresión regular.

Esto funciona para mí:

'<foo> and <bar>'.match(/<[^>]*>/g); // ["<foo>", "<bar>"] 
+0

Puede echar un vistazo a la edición que hice. La expresión regular funciona cuando la ejecuto en jsfiddle pero no en mi script. ¿Alguna idea de cómo está ocurriendo eso? –

+0

@MikeDepies, ¿cuál es el resultado de 'console.log (rx)'? Más específicamente, ¿cuál es la cadena precisa que envía al constructor RegExp, el valor preciso de 'text' y el resultado frente al valor esperado? – davin

+0

Pensé en el problema, gracias a que me preguntó cuál era el valor del texto. El texto estaba convirtiendo los

-1

puede ser que usted tiene un problema, ya que intentar insertar el resultado en HTML y el navegador 'piensa' que es una etiqueta HTML no válido, como <blablabla>.

Cuestiones relacionadas