Avatar billede montago Praktikant
21. april 2005 - 17:16 Der er 6 kommentarer og
1 løsning

regexp.exec problemer

hvorfor virker dette eksempel ikke...

målet er at bruge regexp.exec til at danne et array som skal printes usd... men det array jeg får, indeholder kun et 0-element

alle steder jeg har læst om regexp, skal exec bruges til at danne et array... men det virker BARE IKKE ! :(


var regx = '(\d+)'
var str = '12-23-45-68-789-9-14-5-4-586-1-5-6-45-6-14'

var reg = new RegExp(regx)
var arr = reg.exec(str,"gim")
var show = ''

for(i=0;i<arr.length;i++)
    show = show + arr[i]
document.write(show)
Avatar billede olebole Juniormester
21. april 2005 - 21:12 #1
<ole>

Jeg forstår ikke, hvad det er, du vil. Skal du ikke bare bruge split?

var a, str = '12-23-45-68-789-9-14-5-4-586-1-5-6-45-6-14'
a = str.split("-");
alert(a[3]); //Returnerer: 68

/mvh
</bole>
Avatar billede montago Praktikant
22. april 2005 - 10:10 #2
jeg vil gerne have reg-exp "maskinen" til at lave det array...

hvis split kunne bruges havde jeg brugt split...

men hvis jeg i en kæmpe stor tekst, vil lede efter fx "((Sigma|Minolta|Tamron|Tokina).+[0-9]+-[0-9]+mm)" kan jeg jo ikke bruge split

jså vidt jeg har kunne læse om regexp, vil .exec metoden returnere et array af matches... men det sker bare ikke !!

se eventuelt www.mdk-photo.com/javascript/regex-lense-asp
Avatar billede olebole Juniormester
22. april 2005 - 19:57 #3
Jamen så må du forklare, hvad du vil ende med at have i array'et. Udfra dit spm. at dømme, vil du have et array af bindestreger. Det gik jeg udfra, ikke kunne være meningen. Vil du have et array af tal fra den streng, du viser, er 'split' den eneste fornuftige metode/funktion at bruge. RegExp er en tung maskine, så den bruger man ikke unødigt  :)

Kan du ikke bruge 'split', må det med andre ord være fordi, du ikke har skrevet den streng, du skal have splittet - eller ikke har forklaret, hvor du vil have splittet strengen.
For at kunne skrive en brugbar regExp, er det nødvendigt at kende de nøjagtige mønstre. Både for strengen og for det, der skal splittes om.

Du må altså forklare noget mere, før der er nogen, der kan hjælpe dig  :)
Avatar billede montago Praktikant
22. april 2005 - 23:04 #4
Meningen er at jeg vil have et array af matches...

dvs hvis jeg har en mega streng, og fx søger efter ([0-9]+-[0-9]+mm) skal jeg få et array som fx ser sådan her ud
.[0] = 100-300mm
.[1] = 25-30mm

osv. osv....
Avatar billede roenving Novice
24. april 2005 - 15:30 #5
Måske:

.split(/[^\dm-]+/);
Avatar billede montago Praktikant
25. april 2005 - 14:04 #6
Roenving svarede rigtigt inde i denne Reg-Exp tråd:

http://www.eksperten.dk/spm/611820
Avatar billede montago Praktikant
25. april 2005 - 14:05 #7
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester