2016-05-22 10 views
2

Ich habe diese Zeichenfolge: {16}{2/W}{G/R}{W}. Ich benutze Javascript regex, um den Klammerinhalt zu extrahieren, aber ich möchte alle nur-Zahl Klammern, wie {16} ignorieren. Ich möchte jedoch auf Klammern, die eine Zahl UND einen Buchstaben haben, wie {2/W} übereinstimmen. Bis jetzt habe ich /{([^}0-9]+)}/g, die {G/R} und {W} gerade passt, und schließt {16} aus, wie ich es will, aber es passt nicht {2/W}. Gibt es eine Möglichkeit zu sagen: "Zahlen nicht übereinstimmen, wenn nicht Nicht-Nummern folgen?"Regex; Zahlen stimmen nicht überein, es sei denn, gefolgt von '/'

+0

Versuchen Sie dies: '/ {\ d * [a-? zA-Z \ /] + \ d *?}/g' –

+0

haben Sie versucht, die '{' und '}' zu umgehen? – Jhecht

+0

@Yuriy Yakym, das nur '{2/W}' und nicht '{W}' oder '{G/R}' entspricht. – IronWaffleMan

Antwort

1

können Sie verwenden:

var string = "{16}{2/W}{G/R}{W}"; 
 

 
var result = string.match(/{(\d*[^}\d]+[^}]*)}/g) 
 

 
console.log(result);

Diese Kontrollen für 3 Arten von Spiel:

  • keine Ziffern auf allen (ursprüngliche regex)
  • Alle führenden Ziffern, gefolgt von mindestens einer Nicht-Ziffer und dann alles außer dem abschließenden '}'
  • keine führende Ziffer, die von einer beliebigen Anzahl von Ziffern folgen, und dann alles andere als dem Schließen '}'
1

var regExample = "{16}{2/W}{G/R}{W}"; 
 
var matches = regExample.match(/{([^}\d]+)\}|{(\d+\/\w+)}/g) 
 
console.log(matches);

Verwandte Themen