2016-03-06 16 views
5

Ho riscontrato un problema con un po 'di codice. Inserisco un input e il testo in un paragrafo è evidenziato usando <mark>. Ma quando aggiungo un punto per evidenziare tutti i periodi, il codice si affievolisce e mi dà il codice html e ha delle evidenziazioni casuali. Così ho provato ad aggiungere un sostituto per cambiare i periodi. Ora non impazzirà ma con non evidenzierà nulla. Ecco il mio codice per cercare di sostituire il periodo con il numero di caratteri HTML (&#46;):Sostituire un punto con carattere HTML

var i = document.getElementById("Bar").value; 
var inpu = $.trim(i); 
var inp = inpu.replace(".", "&#46;"); 
var SearchReq = new RegExp("(\\b" + inp + "\\b)", "gim"); 
var Notes = document.getElementById("NoteHolder").innerHTML; 
var after = Notes.replace(SearchReq, "<mark class=" + ColorOptionReady + ">$1</mark>"); 
document.getElementById("NoteHolder").innerHTML = after; 

Qual è il problema con il codice? (Ho provato a rimuovere il "\ b" nel regex ma che non risolvere il problema.)

+1

Quando si crea l'espressione regolare "CercaReq" è necessario sfuggire a caratteri che hanno un significato speciale all'interno di un'espressione regolare. Quindi include periodi, parentesi, parentesi quadre, ecc. Sostituirli con entità html non sarà di aiuto, perché l'html del tuo elemento di paragrafo non include le entità html. – nnnnnn

risposta

5

Sostituire . a \\. (sfuggirvi, \\ backslash necessaria per mantenere backslash quando si passerebbe stringa da RegExp):

Il motivo dell'errore è che . è un carattere che ha un significato speciale in RegExp, quindi è necessario evitarlo prima di passare a RefExp.

Vedere Special characters meaning in regular expressions per ulteriori informazioni.

Buona fortuna)!

+1

Dovresti anche sfuggire alla barra rovesciata nella stringa letterale. "\\". – nnnnnn

+0

@nnnnnn Perché avrei bisogno di "\\". invece di solo "\".? Inoltre, come farei con "\" dato che sfugge alle virgolette e rovinerebbe la sostituzione? – Hawkeye

+0

Ancora incasina se digito semplicemente "." – Hawkeye

Problemi correlati