Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

javascript, preg_match_all equiv

1 view
Skip to first unread message

Leif Neland

unread,
Dec 8, 2014, 9:12:25 AM12/8/14
to
Jeg har en streng: s="kat_11 kat_13 kat_16";
m=s.match(/kat_(\d*)/) giver
m[0]="kat_11"
m[1]="11"


m=s.match(/kat_(\d*)/g) giver
m[0]="kat_11"
m[1]="kat_13"
m[2]="kat_16"

i php ville man med preg_match_all kunne få
m[0][0]="kat_11"
m[0][1]="11"
m[1][0]="kat_13"
m[1][1]="13"
m[2][0]="kat_16"
m[2][1]="16"

Jeg har kun brug for at loope over array(11,13,16)
Kan jeg gøre det i js, eller må jeg først loope over
s.match(/kat_(\d*)/g) og derefter pille det ud, jeg har brug for?

Det er simpelt nok i dette tilfælde, men jeg kunne jo have et regexp
med flere groups.

--
Husk kørelys bagpå, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Martin

unread,
Dec 9, 2014, 12:14:22 AM12/9/14
to
On 12/08/2014 03:12 PM, Leif Neland wrote:
> Jeg har en streng: s="kat_11 kat_13 kat_16";
> m=s.match(/kat_(\d*)/) giver
> m[0]="kat_11"
> m[1]="11"
>
>
> m=s.match(/kat_(\d*)/g) giver
> m[0]="kat_11"
> m[1]="kat_13"
> m[2]="kat_16"
>
> i php ville man med preg_match_all kunne få
> m[0][0]="kat_11"
> m[0][1]="11"
> m[1][0]="kat_13"
> m[1][1]="13"
> m[2][0]="kat_16"
> m[2][1]="16"
>
> Jeg har kun brug for at loope over array(11,13,16)
> Kan jeg gøre det i js, eller må jeg først loope over
> s.match(/kat_(\d*)/g) og derefter pille det ud, jeg har brug for?
>
> Det er simpelt nok i dette tilfælde, men jeg kunne jo have et regexp med
> flere groups.
>

var s = "kat_11 kat_13 kat_16";
var reg = /kat_(\d*)/g;

function getMatches(string, regex, index) {
index || (index = 1);
var matches = [];
var match;
while (match = regex.exec(string)) {
matches.push(match[index]);
}
return matches;
}

console.log(getMatches(s, reg, 1)); // ["11", "13", "16"]
0 new messages