2016-05-06 11 views
1

Ich versuche, den folgenden regulären Ausdruck, um herauszufinden:Regulärer Ausdruck nicht String-Matching

/^[0-9]{2}-[0-9]{2,3}[a-zA-z]{0,1}/g 

In meinem Beispiel.
Folgendes sollte passieren: 00-45, 00-333, 33-333a, 55-34a Die folgende ausfallen sollte:

: 33-3333, 22-22dd, 22-2233

Hier mein Screenshot ist

enter image description here

Aber das einmal scheitern sollte arent nicht. In meinem Javascript-Code kann ich gerade einen Test:

var regExp = new RegExp(exp); 
if(regExp.test(test1)) 
    alert('pass'); 
else 
    alert('fail'); 

Gibt es eine Möglichkeit für den regulären Ausdruck der gesamte Zeichenfolge zu testen? Beispiel 33-3333 passiert wegen 33-333, aber da es noch 3 gibt, möchte ich, dass es scheitert, da die vierte 3 gegen die Zeichenregel getestet würde?

+0

Verwenden Sie '^' und '$', um Zeile Anfang und Ende anzugeben – Fabricator

+0

Haben Sie vergessen, glob? - 'new RegExp (exp, 'g');'? –

Antwort

3
  1. Sie vermissen Ende Anker $ in Ihrem Eingang
  2. A-z innerhalb Zeichenklasse wird auch unerwünschte Zeichen übereinstimmen, müssen Sie tatsächlich A-Z
  3. {0,1} kann ?

verkürzt werden Versuchen Sie, diese Regex:

/^[0-9]{2}-[0-9]{2,3}[a-zA-Z]?$/ 

RegEx Demo

+1

Sie sind so schnell. :) – mkHun

+1

Vielen Dank, es scheint, als hätte ich den $ vergessen. Ich mag Ihre kürzere Version des Entfernens der letzten {0,1} für nur? – adviner