[JS] Regular expression 's' optie werkt niet?

Pagina: 1
Acties:

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 06-05 23:16

Sponge

Serious Game Developer

Topicstarter
Ik probeer met mijn regular expression de innerHTML van een vorm te verwijderen. Na heel wat uren gepruts kwam ik tot de ontdekking dat er een speciale optie is om de "." over meerdere regels te laten werken.

Nou maakt "regexbuddy" bijvoorbeeld;

var myregexp = new RegExp("<form[^>]*>(.*?)</form>", "si");

maar die 's' is fataal voor javascript. Als ik die optie toevoeg krijg ik (ongeacht de regexp) een fout melding dat de regular expression niet geldig is.

Het lijkt me dat deze 's' optie toch wel supported is in IE/Javascript? Andere varianten willen overigens ook niet:

var myregexp = /<form[^>]*>(.*?)<\/form>/si;

Zelfde probleem.

Heeft iemand een idee wat de reden hiervoor kan zijn?


Overigens heeft "Regexp" meer resultaten in P&W, maarja, het is toch javascript lijkt mij ;)

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Even offtopic: ik snap dat je regexp niet werkt en dat je die werkende wil hebben, maar de reden waarvoor is niet helemaal juist. Om alle inhoud van een form te verwijderen kun je het beste met removeChild alle childs verwijderen, dat is de enige juiste en nette DOM methode :)

Verwijderd

en idd werkt de s modifier niet in JS
zie [rml]crisp in "[ JS/RegExp] commentaar verwijderen"[/rml] en verder

[ Voor 53% gewijzigd door Verwijderd op 17-05-2005 16:11 ]


  • Mr_Blobby
  • Registratie: Mei 2000
  • Laatst online: 07-05 12:24
De "s" optie word door Microsofts jscript blijkbaar niet ondersteund, zie: http://msdn.microsoft.com...s56jsobjregexpression.asp

Is de multiline "m" optie misschien hetzelfde als "s"?
En anders moet je als workaround eerst alle newline (\n) en carriage-return (\r) karakters verwijderen.

en zij zagen niet hoe spot in mij worstelde met verdriet


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

multiline is niet hetzelfde als linespan. En javascript regexpen kennen ueberhaupt geen linespan modifier, dus dit is je enige optie:
code:
1
(.|[\r\n])

Je moet dus naast de newline ook de linefeed meenemen, browsers als Moz/Firefox en Opera matchen ook geen linefeeds met de dot.

Intentionally left blank


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 06-05 23:16

Sponge

Serious Game Developer

Topicstarter
Hm. Dan ga ik daar morgen naar kijken. Overigens is DOM niet echt een optie, aangezien dit een tussenlaag is tussen HTML (als tekst) en de database. Maar het is overigens zeker een goed idee, waar ik mischien via een klein omweggetje heel goed gebruik van kan maken (en ik niet snap waarom ik daar zelf niet op gekomen ben).

Tevens zal ik nog even experimenteren met die regexp, want een van de de twee methodes moet toch werken ;).

Bedankt! :)

[ Voor 3% gewijzigd door Sponge op 17-05-2005 19:21 ]

Pagina: 1