2012-04-11 10 views
0

Ich habe diese Zeichenfolge in einem Objekt:Javascript reguläre Ausdrücke vor und nachfolgende Zeichen passende

<FLD>dsfgsdfgdsfg;NEW-7db5-32a8-c907-82cd82206788</FLD><FLD>dsfgsdfgsd;NEW-480e-e87c-75dc-d70cd731c664</FLD><FLD>dfsgsdfgdfsgfd;NEW-0aad-440a-629c-3e8f7eda4632</FLD> 

this.model.get('value_long').match(/[<FLD>\w+;](NEW[-|\d|\w]+)[</FLD>]/g)

Returns:

[";NEW-7db5-32a8-c907-82cd82206788<", ";NEW-480e-e87c-75dc-d70cd731c664<", ";NEW-0aad-440a-629c-3e8f7eda4632<"] 

Was mit meinem regulären Ausdruck falsch ist, dass es Abholung der vorhergehenden ; und nachfolgende <

hier ist ein Link auf die regex http://regexr.com?30k3m

Aktualisiert:

das ist, was ich würde wieder wie:

["NEW-7db5-32a8-c907-82cd82206788", "NEW-480e-e87c-75dc-d70cd731c664", "NEW-0aad-440a-629c-3e8f7eda4632"] 

hier ist ein JSfiddle dafür

http://jsfiddle.net/mwagner72/HHMLK/

Antwort

2

Eckige Klammern erstellen eine Zeichenklasse, die Sie nicht wollen re, versuchen Sie Ihr regex auf die folgende Veränderung:

<FLD>\w+;(NEW[-\d\w]+)</FLD> 

Da es so aussieht Sie die Capture-Gruppe von jedem Spiel greifen möchten, können Sie den folgenden Code verwenden, um ein Array mit der Capture-Gruppe darin zu konstruieren:

var regex = /<FLD>\w+;(NEW[\-\d\w]+)<\/FLD>/g; 
var match = regex.exec(string); 
var matches = []; 
while (match !== null) { 
    matches.push(match[1]); 
    match = regex.exec(string); 
} 

[<FLD>\w+;] würde innerhalb der eckigen Klammern eines der Zeichen übereinstimmen, wenn ich daran denke, was Sie wirklich wollen, ist es, alle diejenigen zu tun, entsprechen. Auch für die andere Zeichenklasse, [-|\d|\w], können Sie die | entfernen, da sie bereits in einer Zeichenklasse enthalten ist. | sollte nur für den Wechsel innerhalb einer Gruppe verwendet werden. Hier

ist ein aktualisierte Link mit dem neuen regex: http://jsfiddle.net/RTkzx/1

+0

Und ich glaube, er will die erste Erfassungsgruppe greifen. Scheint zu versuchen, den Anfang und das Ende zu entfernen. –

+0

Ich schätze Ihre Antwort, und ich habe den Link angeschaut, aber Ihre Regex stimmt nicht mit den richtigen Abschnitten der Zeichenfolge überein. – theSociableme

+0

@MarkWagner Sehen Sie meine Bearbeitung, ich denke, es sollte jetzt tun, was Sie wollen. Ich habe auch einen JSfiddle-Link eingefügt. –

Verwandte Themen