[JS] Reguliere expressie's probleem

Pagina: 1
Acties:

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 09:58
Ik ben nu bezig met het clieënt side gedeelte van een forum, en wil de input van een form controleren op de gebruike ubb code. Dus dat er bijvoorbeeld niet 10x achter elkaar een [ quote] geopent wordt zonder deze te sluiten, want dit verziekt de layout. Nu leken reguliere expressies mij daar wel handig voor, alleen begrijp ik daar nog niet echt als te veel van, maar nu kom ik er ff niet meer uit. Momenteel heb ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript">
 <!--

  re = /^\w*\\[?(quote|code)\]?\w+\\[?(\/quote|\/code)\]?\w*$/
  
  function valideerBericht(reageer)   {
     if (re.test(document.reageer.bericht.value))   {
         return true
     }
     else   {
         alert("Je maakt een fout in de ubb code");
         document.reageer.bericht.focus()
         document.reageer.bericht.select()
         return false
     }
  }
  
 //-->

Nu werkt dit in princiepe goed (Als je 2 of meer quote/code tags opent komt er een alert, alleen nu komt die alert ook als je helemaal geen code/quote tags gebruikt. Dus nu is mijn vraag, hoe kan ik ervoor zorgen dat je ook gewoon tekst kunt typen, zonder ubb-tags te gebruiken.
Alvast bedankt.

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

crisp

Devver

Pixelated

Als het niet afsluiten van een quote je layout verziekt, dan doe je iets fout in de php code die de boel parsed; daar moet je altijd zoeken naar begin en eindtag, en dan pas omzetten (geneste quotes parsen met reguliere expressies is een crime trouwens, maar kan wel - stackbased is beter).
Je regexp zelf: je wilt weten wanneer er [ quote ] of [ code ] geplaatst is, of er ook een [ /quote ] of een [ /code] is; waarom tel je dan niet gewoon het aantal keren dat de begintag is gebruikt, en of de eindtag ook zoveel keren voorkomt? Met reguliere expressies krijg je het nooit waterdicht, want nesting errors haal je er niet uit...

Intentionally left blank


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

Annie

amateur megalomaan

Waarom tel je niet het aantal start- en eindtags? Als hier een verschil in zit kan je een melding geven.
Met een RE lijkt me dit ondoenlijk.

edit:
aaarggh, te laat

[ Voor 11% gewijzigd door Annie op 24-08-2003 22:18 ]

Today's subliminal thought is: