Discussion:
javascript, preg_match_all equiv
(for gammel til at besvare)
Leif Neland
2014-12-08 14:12:11 UTC
Permalink
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
2014-12-09 05:14:21 UTC
Permalink
Post by Leif Neland
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"]

Loading...