2012-04-05 7 views
0

Gegeben eine Zeichenfolge wie: "2.jpg 3 Pic.png 4 Pic For.gif ..." Ich muss jeden Bildnamen erhalten. Im Idealfall würde ich mit Regex beginnen, dann 3 Zeichen zählen und voila.Regex Jquery überspringen/zählen + 3 Zeichen

Was ich bisher habe, schneidet auch den Dateityp, ich möchte das beibehalten, da es variiert.

var words = $(".Input_Field").val().split(/\..{3} /g); 

Die oben erzeugt:

"2,3 Pic, 4 Pic Für ..."

ich die Erweiterung will zurück;

"2.jpg, 3 Pic.png, 4 Pic For.gif, ..."

EDIT

Nur um zu klären, ist das Problem, dass der Dateiname Leerzeichen enthält, und es gibt ein Leerzeichen nach der Erweiterung. Was ich für mich habe ist, dass Erweiterungen immer .xxx sein werden.

Irgendwelche Tipps?

SOLUTION

(/(.*?..{3})/g)

Produziert Leergut fast alles anderes Array-Element (nicht ganz), einfach mit ein, um loszuwerden, wenn Klausel.

Danke allen!

+0

Suchen Sie den ganzen Bildnamen oder nur die Erweiterung? Ich bin verwirrt, weil du sagst: "Ich würde in der Periode anfangen, dann 3 Zeichen zählen, und voila", was bedeutet, dass du nur die Erweiterung brauchst? –

Antwort

3

Versuchen Sie Übereinstimmung statt Split.

var words = $(".Input_Field").val().match(/(\S.*?\..{3})/g) 
+0

Dies funktioniert, aber Sie haben einen nachgestellten Whitespace auf Ihren Dateinamen .. Also vergessen Sie nicht, sie zu trimmen .. – barsju

+0

Geändert die Regex, sollte jetzt ohne die nachfolgenden Leerzeichen sein – robkub

+0

@robkub - Ich ging mit (/ (. *? \. . {3})/g), die Leergut produzierte, das mit einer if-Klausel leicht zu beseitigen war. Zusammen, funktioniert perfekt. Vielen Dank! –