[javascript] hulp nodig bij regular expression

Pagina: 1
Acties:

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
ik ben met een CMS bezig waarbij ik een voorbeeld wil geven van wat er in een textarea getyped wordt. In die textarea kunnen opmaakcodes gebruikt worden zoals http://www.domein.comnaam link. Om nou te voorkomen dat in het voorbeeld dat http://enz ook wordt gedisplayed dacht ik dat zo te doen:

PHP:
1
2
3
4
5
6
function show_tekst(tekst)
{
    text = tekst.replace("^(<url>)(.*)(</url>)$", "$2");
    top.frames['voorbeeld'].document.getElementById('voorbeeldtekst').innerHTML
        = '<div class="kolom">'+text+'</div>';
}


Ik ben alleen niet zo'n held met javascript en snap niet waarom dit niet werkt.

p.s. (die functie zorgt er dus gelijk voor dat het voorbeeld wordt getoont)

[ Voor 0% gewijzigd door Bosmonster op 12-09-2002 14:26 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

edit:

typo uit je titel en de layout weer beetje rechtgezet


Wat is je source van dat voorbeeld frame?

Of probeer anders eens zo als het om de regex gaat:

PHP:
1
text = tekst.replace(/^(<url>)(.*)(</url>)$/, "$2");

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
dat maakt niet uit
Het voorbeeld wordt wel gegeven, alleen replaced ie nix

Ik bedenk me trouwens nu dat ie niet klopt, ik heb er nu dit van gemaakt:
code:
1
text = tekst.replace("^(<url>)(.*)(</url>)(.*)(</naam>)$", "$4");


maar hij replaced het nog steeds niet
(ik wil dus dat alleen de link naam getoont wordt


=> omdat ik in m'n source nix zie controleer ik het met een alert.

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
dat met die / ipv " had ik al eerder geprobeerd (want dacht ook dat het zo moest), maar dan krijg ik een error, dat er een ) mist in de regex.

text = tekst.replace(/^(<url>)(.*)(</url>)(.*)(</naam>)$/, "$4");

***edit***
ik zie nu dat m'n eerste bericht iets niet klopt (door gebruik van > enzo

code:
1
2
dit is hoe aangegeven kan worden dat het een url is en wat de naam ervan is:
<url>http://www.domein.com</url>link naam</naam>


In het voorbeeld moet alleen 'link naam' nog maar te zien zijn

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

2

JavaScript:
1
text = tekst.replace(/^(<url>)(.*)(<\/url>)(.*)(<\/naam>)$/, "$4");


Wel de / escapen

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
ah, dat haalt in iedergeval de error weg :)
...maar hij replaced nog steeds nix :( :(

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

bedoel je zoiets?
JavaScript:
1
text = tekst.replace(/<url>(.*)<\/url>(.*)<\/naam>/, "<a href='$1'>$2</a>");

Today's subliminal thought is:


  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

Annie schreef op 12 september 2002 @ 15:46:
bedoel je zoiets?
JavaScript:
1
text = tekst.replace(/<url>(.*)<\/url>(.*)<\/naam>/, "<a href='$2'>$4</a>");
als t goed is als je t zo doet :)

disjfa - disj·fa (meneer)
disjfa.nl


Verwijderd

$4, met maar 2 capturing groups? :/

Ik zou die dots trouwens ook even ungreedy maken: .*?

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

om t maar ff af te maken....

code:
1
2
3
text = text.replace(\\[url\])((.|\n)*?)(\\[\/url\]\, "<a href='$2' target='_blank'>$2</a>");
    
text = text.replace(\[url=)((.|\n)*?)(\])((.|\n)*)(\\[\/url\]), "<a href='$2' target='_blank'>$5</a>");


die eerste is dus alleen de link maken en de 2e kan je er een naam bij plakken :)
(ow en [ tags ipv < tags omdat ik m gewoon ff heb gekopierd :))

edit:
wtf... niet goed... :/

disjfa - disj·fa (meneer)
disjfa.nl


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Als ik eerlijk ben, begrijp ik nog steeds niet wat je wilt.... kun je 't een beetje beter uitleggen?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Als je gewoon met document.write de inhoud van je textarea op de pagina zet......dan zie je toch nooit opmaak-codes, die worden dan toch gewoon verwerkt door je browser ??

of heb ik het probleem niet goed begrepen ?

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

2

Hij probeert een manier te vinden om een bepaalde tekst te laten linken in zijn cms, net zoals dat hier op GoT werkt als [ url=http://bla.com ] bla.com [/ url] volgens mij. En nu wil hij volgens mij met Javascript afvangen of mensen http:// voo hun url zetten of niet.

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Hmm..ik dacht toch dat ik het duidelijk uit had gelegd in m'n eerste post, maargoed hier gaat ie nog een keertje en zal gelijk nog wat duidelijker proberen te zijn:
- ik ben bezig een CMS te maken. De content van een pagina wordt in een textarea getyped. Omdat de pagina uit kolommen bestaat heb ik een apart frame gemaakt waarin een voorbeeld moet komen van wat je typed en hoe dat er binnen 1 kolom komt uit te zien, zodat je weet waar de text wordt afgebroken.
Om dit voorbeeld te tonen maak ik gebruik van een button waar deze functie aan vast zit:
code:
1
2
3
4
5
6
function show_tekst(tekst) 
{ 
    text = tekst.replace(/^(<url>)(.*)(<\/url>)(.*)(<\/naam>)$/, "$4"); 
    top.frames['voorbeeld'].document.getElementById('voorbeeldtekst').innerHTML 
        = '<div class="kolom">'+text+'</div>'; 
}


In princiepe werkt het goed, hij laat de tekst netjes zien, alleen nou liep ik tegen het volgende probleem aan:
in die textarea kan gebruik worden gemaakt van bepaalde tags om een link te laten zien. In dit geval ziet dat er zo uit:
code:
1
<url>http://www.domein.com</url>linkname</name>

En in het voorbeeld wil ik alleen maar 'linkname' tonen. En dat is dus precies wat ik met die regex probeer te doen. Die moet <url>http://www.domein.com</url> en </name> er uit filteren. Alleen dat doet ie dus niet, daar zit het probleem - hij zet gewoon nog steeds <url>http enz neer

p.s. Het gaat hier dus om het voorbeeld! Er hoeft niets te worden omgezet naar een url ofzo. Dat gebeurd pas als het wordt opgeslagen en gebeurt met PHP (en werkt ook)
Pagina: 1