2010-06-25 17 views
101

Ho bisogno di sfuggire ai caratteri speciali dell'espressione regolare usando lo script java. Come posso ottenere questo? Qualsiasi aiuto dovrebbe essere apprezzato.Come sfuggire ai caratteri speciali dell'espressione regolare usando javascript?


Grazie per la vostra reply.But rapido ho bisogno di scappare tutti i caratteri speciali di expression.I regolari hanno provate da questo codice, ma non riesco a ottenere il risultato.

RegExp.escape=function(str) 
      { 
       if (!arguments.callee.sRE) { 
        var specials = [ 
         '/', '.', '*', '+', '?', '|', 
         '(', ')', '[', ']', '{', '}', '\\' 
        ]; 
        arguments.callee.sRE = new RegExp(
        '(\\' + specials.join('|\\') + ')', 'gim' 
       ); 
       } 
       return str.replace(arguments.callee.sRE, '\\$1'); 

      } 

function regExpFind() { 
      <%--var regex = new RegExp("\\[munees\\]","gim");--%> 
        var regex= new RegExp(RegExp.escape("[Munees]waran")); 
        <%--var regex=RegExp.escape`enter code here`("[Munees]waran");--%> 
        alert("Reg : "+regex); 
       } 

Cosa ho sbagliato con questo codice? Per favore guidami.

+4

Vedere [Come evitare espressioni regolari in javascript?] (Http://stackoverflow.com/questions/2593637/how-to-escape-regular-expression-in-javascript) –

risposta

11

Utilizzare la barra rovesciata per uscire da un carattere. Per esempio:

/\\d/ 

Ciò corrisponderà \ d al posto di un carattere numerico

8

Con \ a fuggire caratteri speciali

Escapes caratteri speciali ai caratteri letterali e letterali di speciale.

E.g:/(s)/corrisponde a '(s)' mentre/(\ s)/corrisponde a qualsiasi spazio bianco e cattura la corrispondenza.

Fonte

: http://www.javascriptkit.com/javatutors/redev2.shtml

269

utilizzare il carattere \ per sfuggire un personaggio che ha un significato speciale all'interno di un'espressione regolare.

Per automatizzare esso, è possibile utilizzare questo:

function escapeRegExp(text) { 
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); 
} 

Aggiornamento: V'è ora una proposta di standardizzare questo metodo, possibilmente in ES2016: https://github.com/benjamingr/RegExp.escape

Aggiornamento: La proposta di cui sopra è stato rifiutato, quindi continua a implementarlo da solo se ne hai bisogno.

+1

Cosa c'è di speciale in ","? Solo curioso. – Viliam

+1

@Viliam Non conosco i dettagli esatti, ma IIRC il ',' deve essere sfuggito per compatibilità all'indietro con alcuni motori JavaScript vecchi e buggy. –

+0

@Muneeswaran Questa dovrebbe essere la risposta accettata! –

Problemi correlati