regex - Hur man undviker specialtecken i reguljära uttryck med javascript?


Jag behöver undvika de speciella tecknen i reguljära uttryck med JavaScript. Hur kan jag uppnå detta? All hjälp uppskattas.

Tack för ditt snabba svar. Men jag behöver undkomma alla specialtecken i reguljära uttryck. Jag har försökt med denna kod, men jag kan inte uppnå resultatet.

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);
                }

Vad är fel med den här koden? Vänligen vägled mig.

Svar #1

Använd tecknet \ för att undkomma ett tecken som har särskild betydelse i ett reguljärt uttryck.

För att automatisera det kan du använda detta:

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

Uppdatering: Det finns nu ett förslag att standardisera denna metod, möjligen i ES2016: https://github.com/tc39/proposal-regex-escaping

Uppdatering: Det ovan nämnda förslaget avslogs (men en omskrivning för 2023 pågår), så fortsätt att implementera detta själv tills vidare.

Svar #2

Använd bakåtsnedstreck för att undkomma ett tecken. Till exempel:

/\\d/

Detta kommer att matcha \d istället för ett numeriskt tecken

Svar #3

Med \ undviker du specialtecken

Flyr specialtecken till bokstavlig och bokstavliga tecken till special.

T.ex: /\(s\)/ matchar ''(s)'' medan /\(\s)/ matchar vilket blanksteg som helst och fångar matchningen.

Källa: http://www.javascriptkit.com/javatutors/redev2.shtml

Relaterade artiklar