Toon posts:

Regular Expressions JavaScript Probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem met Regular Expressions in JavaScript. Onderstaande code komt uit mijn JavaScriptboek voor beginners, en stopt de fruitsoorten netjes in een array. Nu (je raadt het waarschijnlijk al) wil ik alleen de prijzen in een array. In Internet Explorer gaat dat netjes in een array van index 0 t/m 3. In Firefox echter is array index 0 leeg en zitten de prijzen in array index 1 t/m 4... :? En wat ik ook probeer, het lukt me in Firefox niet!

Kan iemand mij uitleggen wat er mis gaat, waarom het mis gaat en hoe ik het eventueel werkend krijg? :)

code:
1
2
3
4
5
6
<script language="JavaScript" type="text/JavaScript">
var myListString = "apple, 0.99, banana, 0.50, peach, 0.25, orange, 0.75";
var theRegExp = /[^a-z]+/i;
var myFruitArray = myListString.split(theRegExp);
document.write(myFruitArray.join("<br>"));
</script>

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:10

crisp

Devver

Pixelated

En toch doet Firefox het goed; een lege match is ook een match ;)
Maar zou je hier niet beter kunnen splitten op de komma en dan elke 2e item kunnen uitlezen, of specifiek matchen op de prijs?
dus:
JavaScript:
1
2
3
var myFruitArray = myListString.split(/,/);
for (var i = 1; i < myFruitArray.length; i += 2)
    document.write(myFruitArray[i] + '<br>');

of:
JavaScript:
1
2
3
var theRegExp = /\d+\.\d{2}/g, match;
while ((match = theRegExp.exec(myListString)))
    document.write(match[0] + '<br>');

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op woensdag 04 april 2007 @ 17:56:
En toch doet Firefox het goed; een lege match is ook een match ;)
Maar zou je hier niet beter kunnen splitten op de komma en dan elke 2e item kunnen uitlezen, of specifiek matchen op de prijs?
Toch vreemd :) Want ik had mijn regular expression zo gezet dat zowel de letters, de komma's en de spaties werden geslecteerd, en toch tovert Firefox ergens een empty 'iets' vandaan...

Maar, je tweede oplossing vind ik erg interessant, ik gebruik toch een regular expression en ik krijg het gewenste resultaat. Maar ik heb dat nog niet gehad, dus ik ga snel verder met het boek ;)

Bedankt voor je reactie!

[ Voor 14% gewijzigd door Verwijderd op 04-04-2007 18:47 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:10

crisp

Devver

Pixelated

Verwijderd schreef op woensdag 04 april 2007 @ 18:45:
[...]


Toch vreemd :) Want ik had mijn regular expression zo gezet dat zowel de letters, de komma's en de spaties werden geslecteerd, en toch tovert Firefox ergens een empty 'iets' vandaan...
Niet vreemd:
JavaScript:
1
2
var s = ',1,2,3';
var a = s.split(/,/);

de eerste match is een lege string, volledig volgens specificatie tenzij je expliciet zegt dat je geen empty matches wilt hebben (PCRE heeft daar een optie voor, maar ik weet niet of IE wel gebruik maakt van PCRE of een eigen implementatie heeft).

Intentionally left blank


Verwijderd

Topicstarter
Weer wat geleerd vandaag dus! :)