2016-01-22 7 views
5

Ho un Regex:recuperare parentNode di testo con espressioni regolari JavaScript

var re = RegExp("(?:^\\W*|(" + motBefore.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ")\\W+)" + motErreur.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "(?:\\W+(" + motAfter.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ")|\\W*$)", "g"); 

Con questa espressione regolare che posso trovare nella mia pagina al posto di una certa parola per quanto riguarda è posizionamento (come questo non ho occorrenza multipla se non è quello che voglio).

Mi piacerebbe visitare il motErreur con una spanna. Il fatto è che non posso farlo con una semplice sostituzione e alterando l'innerHTML perché rovina i tag della mia pagina.

sto usando:

var result = document.getElementById('edth_corps'); 
var textRangeGlobal = document.body.createTextRange(); 
textRangeGlobal.moveToElementText(result); 
if(textRangeGlobal.findText(motErreur)){ 
    var html= "<span id='"+nbId+"' class='erreurOrthographe' oncontextmenu='rightClickMustWork(event, this);return false'>" + motErreur + "</span>"; 
    textRangeGlobal.pasteHTML(html); 
} 

Quello che vorrei è che var result non abbiate document.getElementById('edth_corps'); ma il nodo in cui ho ottenuto il risultato con il mio regex.

sono su IE5 e non riesco a capire come ottenere il nodo utilizzando il RegEx (ho provato con match, ma non ha funzionato.

Qualcuno ha un'idea di come farlo?

+9

Hai detto IE5? Quindi stai usando Win95? –

+0

@torazaburo compatibilità con la modalità quirck :( – Slayner

+0

"i" prima "e" se non dopo "c" –

risposta

0

utilizzando regex non è un buon approccio a questo problema si sarebbe meglio creare un elemento DOM e utilizzando l'attraversamento dom per rimuovere gli elementi indesiderati si può fare questo codice simile al:..

var wrap = document.createElement('div'); 
wrap.innerHTML = "your html"; 

Ora è possibile lavorare con l'elemento "virtuale" usando do selettori m. e aggiungere il nodo al dom

target.appendChild(wrap.firstElementChild.cloneNode(true); 
+0

selettori query non esistono in IE5 .... questo è il motivo per cui ho postato un domanda qui e uso RegEx. Se i selettori Query erano lì potrei già avere la soluzione da solo per questo. – Slayner

+0

) ho correggere errore, passare a "dom selettori" –

+0

c'è ancora un grosso problema, il RegEx deve essere usato così nella frase: "questo test, ma non testarlo". il primo test sarà all'interno dello SPAN creato ma il secondo no, questo è dove viene usato il RegEx, quindi possiamo impedire che i duplicati abbiano la stessa cosa quando non lo vogliamo. Inoltre la tua risposta è solo parziale, quindi non risponde completamente alla domanda. – Slayner

Problemi correlati