Toon posts:

[regexp/js]Zoeken naar < en >

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer in javascript via regular expressions HTML tags om te zetten. Bijvoorbeeld de <b> tag.

code:
1
string.replace('/<b>/gi', '[b]');


Maar hiermee wordt dus niets veranderd. Voor zover ik weet (en op internet kan vinden) zijn < en > geen metacharacters en hoeven ze dus niet te worden geëscaped (?!). Ondanks dat heb ik dat óók geprobeerd, maar zonder resultaat.

Een google search levert niets op (je kunt daar geloof ik ook niet zoeken naar < en >) en hier zoeken werkt ook niet zoals ik wil.

Kan iemand mij uitleggen wat ik verkeerd doe?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:40

crisp

Devver

Pixelated

probeer het eens zo:
JavaScript:
1
string.replace(/<b>/gi, '[b]');

;)

Intentionally left blank


Verwijderd

Topicstarter
Ha, dat werkt, bedankt.

Als ik het goed begrijp zijn regular expressions dus gewoon geen strings.

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:15

Cyphax

Moderator LNX
Verwijderd schreef op maandag 09 mei 2005 @ 16:20:
Ha, dat werkt, bedankt.

Als ik het goed begrijp zijn regular expressions dus gewoon geen strings.
Juist.
Je zou dat ook zo kunnen doen dus:
code:
1
2
var regexp=/<b>/gi;
string.replace(regexp, '[b]');

Misschien is dat iets onderhoudbaarder. :)

[ Voor 8% gewijzigd door Cyphax op 09-05-2005 16:23 ]

Saved by the buoyancy of citrus


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

of met
code:
1
var reg = new RegExp("<b>", "gi");


maar met /'s eromheen is gewoon lekker kort en makkelijk.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
Nog één klein probleempje. Ik gebruik backreferences om snel een hele tag om te zetten, maar dat geeft in sommige gevallen problemen. Een voorbeeld wat ik probeer om te zetten:

code:
1
asdsk<b>asdkjsd</b></u><b>asdask</b>
Een mooi stukje poëzie zoals jullie zien B)

Deze code heb ik in een variabele SML, waar ik de volgende bewerkingen op uitvoer:

code:
1
2
3
    SML=SML.replace(/<b>(.+)<\/b>/gi, '[b]$1[/b]');
    SML=SML.replace(/<i>(.+)<\/i>/gi, '[i]$1[/i]');
    SML=SML.replace(/<u>(.+)<\/u>/gi, '[u]$1[/u]');


Als deze code wordt losgelaten op het bovengenoemde stukje, gaat het helemaal mis. In plaats van dat het eerste <b>...</b> stukje wordt omgezet, wordt er vanaf de <b> tag tot de laatste </b> gekeken. Daarna is er dus een omgekeerde tag over (eerst </b> en dan <b>) die vervolgens niet gewijzigd wordt.

Kan ik op de een of andere manier opgeven dat ik wil dat er steeds een zo kort mogelijke tag wordt gepakt, dat is namelijk het enige probleem met deze code.

[ Voor 11% gewijzigd door Verwijderd op 09-05-2005 18:04 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

PHP kent voor zijn PCRE-functies de ungreedy modifier (de U). Misschien werkt die in Javascript ook wel? :)

'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

of de plus ungreedy maken door +?

wat was ook weer die link naar die handige regex tut? stond die niet in de p&w faq?

Verwijderd

Topicstarter
Yup, daar was ik al geweest, goeie site inderdaad.

Ik kon geen ungreedy modifier vinden voor javascript, maar de plus ungreedy maken werkt prima. Bedankt iedereen.
Pagina: 1