2012-04-10 11 views
11

Sto cercando di ottenere un'espressione regolare per accettare < e> come i miei delimitatori esterni per afferrare tutto il contenuto tra di loro.Le parentesi angolari (< or >) sono speciali in un'espressione regolare?

così contenuti come ad esempio

<tfdsfa> 

dovrebbe essere afferrato.

Devo sfuggire ai caratteri < e> o qualcosa del genere?

Regex generato dal mio script:

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

Codice da file:

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

La tua espressione regolare funziona. Che cosa esattamente non riesci a raggiungere? –

+0

Usa questo strumento ogni volta che sviluppi espressioni regolari: http://gskinner.com/RegExr/ –

+0

Puoi mostrare come stai usando questa espressione? – MilkyWayJoe

risposta

16

<> sono metacaratteri all'interno di un'espressione regolare.

questo funziona per me:

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

Puoi dare un'occhiata alla modifica che ho fatto. La regex funziona quando la eseguo in jsfiddle ma non nel mio script. Qualche idea su come stia accadendo? –

+0

@MikeDepies, qual è l'output di 'console.log (rx)'? Più precisamente, qual è la stringa precisa che invii al costruttore RegExp, il valore preciso di 'text' e il risultato rispetto al valore atteso? – davin

+0

Calcolato il problema, grazie al fatto che hai chiesto quale fosse il valore del testo. Il testo stava convertendo i

-1

Può essere avete problema, perché si cerca di risultato in formato HTML e il browser inserire 'pensa' che si tratta di un tag HTML non è valido, come <blablabla>.

Problemi correlati