2017-09-19 4 views
2

Ich habe die folgende Zeichenfolge:Wie alle Ziffern nach bestimmten Zeichen bekommen Regex mit

@ eur99.def.mark.ocal: 7342s/MWEB/web-style.s.git # V4.2.0

Wie bekomme ich nur die folgenden Nummern 4,2,0.

Grundsätzlich brauche ich alle Zahlen nach dem Strichzeichen (#);

Ich habe das versucht (mit Blick hinter Muster), aber ohne Erfolg.

Regex Ausdruck:

(? < = #) \ d +

Hinweis: Bitte, nicht in String-Methoden gebaut JS

+0

https://StackOverflow.com/a/19774560/5638869 – neoDev

+0

JA und JA, Sie können die Web-Zeichenfolge ignorieren! – masterach

+0

Warum können Sie keine JS-String-Methoden verwenden? Seien Sie vorsichtig mit dem XY-Problem: http://xyproduction.info/ – Sidney

Antwort

1

Verwenden Sie Klammern Spiele erinnern, können Sie sie in der resultierenden Array (Indizierung von 1, das ganze Spiel wird in 0 gespeichert) zugreifen

const str = '"web": "@eur99.def.mark.ocal:7342s/mweb/web-style.s.git#v4.22.514"' 
 
const regExp = /#v([0-9]+)\.([0-9]+)\.([0-9]+)/ 
 
const res = regExp.exec(str) 
 

 
console.log(res[1], res[2], res[3]) // 4 22 514

0

Sie können indexOf verwenden den Index #

zu erhalten

var str = "@eur99.def.mark.ocal:7342s/mweb/web-style.s.git#v4.2.0"; 
 
var num = str.substring(str.indexOf("#") + "#v".length);

+0

Nein, nur Regex ... – masterach

1

Unkomplizierte Ansatz:

var regex = /\d/g, 
 
    str = '"web": "@eur99.def.mark.ocal:7342s/mweb/web-style.s.git#v4.2.0"', 
 
    sl = str.substr(str.indexOf('#v')), // the needed slice 
 
    result = []; 
 

 
while ((m = regex.exec(sl)) !== null) { 
 
    // This is necessary to avoid infinite loops with zero-width matches 
 
    if (m.index === regex.lastIndex) { 
 
     regex.lastIndex++; 
 
    } 
 
    result.push(m[0]); 
 
} 
 

 
console.log(result);

+0

Ich brauche Regex ... – masterach

Verwandte Themen