2016-03-22 21 views
0

Dies sind meine Saiten:Wie extrahiert man eine Zeichenfolge zwischen zwei Zeichen?

[email protected] 
[email protected] 
[email protected] 

Was ich tun möchte, ist 180, 360 und 480 von den Saiten zu extrahieren.

Ich habe diese RegEx _(.*)@ versucht, aber keine Chance.

+2

Vielleicht das: '_ (\ d *) @' - ist es immer eine Zahlenfolge? – sideroxylon

+0

Ja ist es. Aber dieser enthält auch _ und @ Zeichen. Wenn du sie auch loswerden kannst, warum postest du keine Antwort? :) – scaryguy

Antwort

2

Sie einfach die Capture-Gruppe wollen:

var str = '[email protected]'; 
 
var substr = str.match(/_(\d*)@/); 
 
if (substr) { 
 
    substr = substr[1]; 
 
    console.log(substr); 
 
} 
 

 
//outputs 180

+0

Es wird auch ein 'TypeError' geworfen, wenn es keine Übereinstimmung gibt (Eigenschaft 1 von' null' kann nicht gelesen werden). – Marty

+0

Siehe Edit - wenn Zweifel bestehen, dass der String den Substr enthält, überprüfe zuerst die Übereinstimmung und dann die Capture-Gruppe. – sideroxylon

1

du hast es fast

_(\d{3})@ 

Sie benötigen ein Spiel auf Ziffern zu tun, sonst wird die Zeichenfolge auch wegen der anderen Strich ausgewählt bekommen.

Ofcourse Ihr Spiel \1 in sein

0

versuchen Sie dies:

(? < = (?!. *)) (. *) (? = @)

Verwenden Lookbehind (? < =) und nach vorne schauen (? =), So dass "_" und "@" sind nicht enthalten im Spiel.

(?!. *) erhält das letzte Vorkommen von "_".

(. *) Entspricht allem zwischen dem letzten Auftreten von "_" und "@".

Ich hoffe es hilft.

Verwandte Themen