Toon posts:

[JS] RegExp - Zoekindex instellen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kun je de zoekindex binnen een reguliere expressie instellen? Dus dat je bijvoorbeeld alleen de tweede 'Pietje' uit de string 'JantjePietjeJantjePietje' selecteert.

Ik zat zelf te denken aan iets van: /(Pietje){18,}/, maar dit werkt niet helaas.

[ Voor 6% gewijzigd door Verwijderd op 06-06-2004 17:54 ]


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
gebruik preg_match_all, dan krijg je een array terug. Dan kies je gewoon de X-de match, die je wil hebben.

Misschien dat het zo kan. Als dit niet is wat je wilt, moet je even wat meer uitleg geven.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Verwijderd

Topicstarter
Kon dat maar. Helaas heeft JS niet zo'n goede RegExp ondersteuning als PHP. :/

Edit:

Dit is alles dat je kunt gebruiken: http://devedge.netscape.c...rence/regexp.html#1193136

[ Voor 49% gewijzigd door Verwijderd op 06-06-2004 18:05 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Kun je niet splitten op "Pietje" en daarna alles weer aan elkaar plakken op de manier die jij wil? Ik ben bang dat de RegExp support in JS te beperkt is.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ja vrees inderdaad dat ik een dergelijke, niet zo mooie, oplossing moet gaan toepassen. Kut JS ook. :P

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:54

crisp

Devver

Pixelated

kan wel; en de RegExp implementatie in JS is imho net zo goed als in PHP, misschien zelfs wel beter :P

JavaScript:
1
2
3
4
5
var string = 'JantjePietjeJantjePietje';
var re = /Pietje/g;
re.lastIndex = 10; // zet index voorbij de 1e match
var myArray = re.exec(string);
alert(myArray.index); // 18

[ Voor 6% gewijzigd door crisp op 06-06-2004 20:35 ]

Intentionally left blank


Verwijderd

crisp schreef op 06 juni 2004 @ 20:35:
kan wel; en de RegExp implementatie in JS is imho net zo goed als in PHP, misschien zelfs wel beter :P

JavaScript:
1
2
3
...
re.lastIndex = 10; // zet index voorbij de 1e match
...
Dat zeg je wel zo mooi, maar dan moet je dus wel weten wat de start index moet zijn. Je moet dan wel weten dat de eerste match ergens voor positie 10 is. Dan kan je net zo goed met een substr gaan werken...
Of sla ik de plank volledig mis? :?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:54

crisp

Devver

Pixelated

Verwijderd schreef op 06 juni 2004 @ 21:08:
[...]


Dat zeg je wel zo mooi, maar dan moet je dus wel weten wat de start index moet zijn. Je moet dan wel weten dat de eerste match ergens voor positie 10 is. Dan kan je net zo goed met een substr gaan werken...
Of sla ik de plank volledig mis? :?
lees de startpost eens ;)
En ik kan me best situaties voorstellen waarbij je iets wilt matchen, maar pas vanaf een bepaalde positie (die je dus vantevoren al weet).

btw, voor het maken van een array met alle matches ala preg_match_all zie [rml]crisp in "[ JS] RegExp - Meerdere woorden uit een s..."[/rml]

[ Voor 13% gewijzigd door crisp op 06-06-2004 21:46 ]

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 06 juni 2004 @ 20:35:
kan wel; en de RegExp implementatie in JS is imho net zo goed als in PHP, misschien zelfs wel beter :P

JavaScript:
1
2
3
4
5
var string = 'JantjePietjeJantjePietje';
var re = /Pietje/g;
re.lastIndex = 10; // zet index voorbij de 1e match
var myArray = re.exec(string);
alert(myArray.index); // 18
Dat zocht ik inderdaad. Thanks! Ik wist op zich wel van die lastIndex, maar ik dacht dat die read only was.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:54

crisp

Devver

Pixelated

http://devedge.netscape.c...rence/regexp.html#1193732
lastIndex

A read/write integer property that specifies the index at which to start the next match
oftewel: read the fine manual ;)

Intentionally left blank


Verwijderd

Topicstarter
'fine'? :P

[ Voor 88% gewijzigd door Verwijderd op 07-06-2004 00:05 ]


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Kun je daar mbv indexOf niet iets mooiers mee doen? Dat je automatisch begint te matchen vanaf de eerste ipv het hard op te geven?
Pagina: 1