Avatar billede mulemule Nybegynder
31. oktober 2005 - 13:00 Der er 12 kommentarer og
1 løsning

Regular Expression spm

Hvorfor virker nedenstående kode ikke som jeg forventer.

Den udskifter alt med mellemrum, selvom jeg kun vil have at den udskifter . med mellemrum ????

s = "hej.hej.ehj";
alert(s);
re = new RegExp(".","g");
s = s.replace(re," ");
alert(s);
Avatar billede softspot Forsker
31. oktober 2005 - 13:02 #1
Fordi . et er specialtegn...

s = "hej.hej.ehj";
alert(s);
re = new RegExp("\.","g");
s = s.replace(re," ");
alert(s);
Avatar billede mulemule Nybegynder
31. oktober 2005 - 13:11 #2
Tak, hvad skal man så skrive hvis man gerne vil udskifte \ med mellemrum ?
Avatar billede mulemule Nybegynder
31. oktober 2005 - 13:11 #3
og :
Avatar billede mulemule Nybegynder
31. oktober 2005 - 13:13 #4
Øhhh, tak for svar. Men det virker ikke, den udskifter stadig bare alle tegn også din kode.
Avatar billede softspot Forsker
31. oktober 2005 - 13:24 #5
hmm... så må der være noget andet galt, for det fungerer fint her hos mig...?
Avatar billede softspot Forsker
31. oktober 2005 - 13:35 #6
Hvis du vil udskifte \ benytter du \\ og : angiver du bare uden nogen "escaping"...
Avatar billede softspot Forsker
31. oktober 2005 - 13:41 #7
Jeg har lavet denne lille latterlige regexp-testside, hvor du kan indtaste en expression og den tekst du vil prøve at replace noget i og så kan de se resulatet i den nederste tekstramme...


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title></title>
  <script type="text/javascript">
    function testRE(obj) {
      var re = new RegExp(obj.form.expr.value, "g");
      obj.form.result.value = obj.form.source.value.replace(re, "REPLACED");
      obj.form.expr.focus();
    }
   
    window.onload = function() {
      document.forms[0].expr.focus();
    }
  </script>
</head>
<body>

  <form>
    <input type="text" name="expr" size="70">
    <input type="button" value="test" onclick="testRE(this)"><br>
    <textarea name="source" cols="60" rows="15"></textarea><br>
    <textarea name="result" cols="60" rows="15"></textarea><br>
  </form>

</body>
</html>


Den kan sagtens gøres meget mere brugervenlig og dynamisk, men det var bare for at have en lille testbænk :)
Avatar billede mulemule Nybegynder
31. oktober 2005 - 13:45 #8
Men stop stop, hvis man korer denne kode i både IE og Firefox, ser man blot en tom alert box, hvad er der galt med den kode :
<HTML>
<SCRIPT>
s = "hej.hej.ehj";
re = new RegExp("\.","g");
s = s.replace(re," ");
alert(s);
</SCRIPT>
</HTML>
Avatar billede softspot Forsker
31. oktober 2005 - 13:55 #9
Prøv med denne i stedet:

<HTML>
<SCRIPT>
s = "hej.hej.ehj";
re = new RegExp("[\.]","g");
s = s.replace(re," ");
alert(s);
</SCRIPT>
</HTML>
Avatar billede mulemule Nybegynder
31. oktober 2005 - 13:58 #10
Den virker tak. Tak.

husk at svar i svar for at få point.
Avatar billede softspot Forsker
31. oktober 2005 - 14:00 #11
Det kom der - velbekomme :)
Avatar billede roenving Novice
01. november 2005 - 15:12 #12
re = new RegExp("\\.","g");

eller:

re = /\./g;

-- \ virker også som escape-tegn i tekst-strenge, så der skal dobbeltescapes i en RegExp-constructor ved special-tegn !-)
Avatar billede softspot Forsker
01. november 2005 - 17:20 #13
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester