2012-04-12 5 views
0

Ich verwende diesen regulären Ausdruck: [a-zA-Z0-9 \ -.,: + *() = \ '& _], aber ich bekomme Fehler wie: 'ungekündigten Zeichenklasse' Fehler in diesem Ausdruck ':Wie verwendet '' im regulären Ausdruck extjs

Demo-Code:

Ext.getCmp('field2').addListener({ 
     beforequery: function (e) { 
      if (e.query && e.query.indexOf('?') != -1) { 
       var temp = ''; 
       for(var i=0;i<e.query.length;i++){ 
        temp = temp + '['+e.query[i]+ ']'; 
       } 
       e.cancel = true; 
       var query = new RegExp(String.format('^{0}',temp.replace(/\?/g, 'a-zA-Z0-9\.,:\+*()=\'&_-\\'))); 
       this.expand(); 
       this.store.clearFilter(true); 
       this.store.filter(this.displayField, query); 
      } 
     } 
    }); 

Fehler:

1.Bitte mir jemand sagen, was ist falsch in diesem, vor allem mit umgekehrten Schrägstrich.

2.when geben wir gewünschte Zeichen in Combobox sie automatically..so ausgewählt werden, wenn wir neue Zeichen wir Seite Pfeil haben eingeben möchten drücken oder sonst verbleibenden Zeichen werden gelöscht ...

Dank einmal wieder, denken

Raj

+1

Einige Demo-Code wäre nett –

Antwort

1

ich Ihnen einige der Elemente in Ihre Zeichenklasse zu entkommen. Wie Ihr Backslash, Stern, Plus, Klammer und Punkt.

So etwas wie dies [a-zA-Z0-9\\-\.,:\+\*\(\)=\\'&_]

einen umgekehrten Schrägstrich, um Sonderzeichen [\^$.|?*+(){} in einem regulären Ausdruck Hinzufügen unterdrücken ihre besondere Bedeutung, die man sie buchstäblich verwenden.

http://www.regular-expressions.info/reference.html

+0

Hallo @hungerstar ich bekomme diesen Fehler, wenn ich die obige Regex verwende: Uncaught SyntaxError: Ungültiger regulärer Ausdruck:/^ [a-zA-Z0-9 -.,: + *() = \ '& _] [] /: Nicht abgeschlossene Zeichenklasse – user27

0

In der Regex gibt es 11 Zeichen, die Sie entkommen müssen. Die Öffnung eckige Klammer [, der Backslash \, das Dach ^, das Dollarzeichen $, die Zeit oder einen Punkt, die vertikalen Balken oder Rohrsymbol |, das Fragezeichen?, das Sternchen oder Stern *, das Pluszeichen +, die öffnende runde Klammer (und die schließende runde Klammer).

0

Sie müssen einige Zeichen in Ihrem regulären Ausdruck vermeiden. So würde es wie folgt aussehen:

var regex = /[a-zA-Z0-9\-\.,:\+\*\(\)=\\'&_]/; // Note the backslashes 

Klammerung, das Pluszeichen, das Sternchen und der Backslash sind nur einige der vielen Zeichen, die eine besondere Bedeutung in regulären Ausdrücken haben. Um sie wörtlich zu erfassen, müssen Sie ihnen mit einem Backslash entkommen.

+0

Hi @ alpha123 Ich erhalte diesen Fehler, wenn ich die obige Regex verwende: Uncaught SyntaxError: Ungültiger regulärer Ausdruck:/^ [a-zA-Z0-9-., : + *() = \ '& _] [\] /: Nicht abgeschlossene Charakterklasse – user27

+0

@ rajasti277 Ich muss geschlafen haben, als ich das geschrieben habe. Probieren Sie die aktualisierte Version. –