Avatar billede netsrac Nybegynder
08. maj 2008 - 10:05 Der er 2 kommentarer og
1 løsning

Escape parantes i regular expression

Jeg er ved at blive tosset, jeg kan ikke få javascript til at escape en parantes i regular exression.

Jeg har følgende kode:

<script type="text/javascript">
ordCount = -1;
ordArr = new Array();
ordIDArr = new Array();

ordCount++;
ordArr[ordCount] = 'Bolig';
ordIDArr[ordCount] = '1';
ordCount++;
ordArr[ordCount] = 'IBI';
ordIDArr[ordCount] = '3';
ordCount++;
ordArr[ordCount] = 'Robotstøvsuger';
ordIDArr[ordCount] = '4';
ordCount++;
ordArr[ordCount] = 'Pervasive Computing';
ordIDArr[ordCount] = '5';


thisT = document.getElementById('VisningDiv').innerHTML;
for (j = 0; j < ordArr.length; j++)
{
r = ordArr[j];
r += /\){0,1} {0,1}/;
alert(r);
  ma = thisT.match(new RegExp('' + ordArr[j] + '\)' , "gi" ));
  if (ma != null)
  {
      for (k = 0; k < ma.length; k++)
      {

          thisT = thisT.replace(new RegExp('' + ma[k] + '' , "g" ), "<a href=\"/page96.aspx?recordid96=" + ordIDArr[j] + "\" class=\"inlinelink\">" + ma[k] + "</a>");
      }
  }
}
document.getElementById('VisningDiv').innerHTML = thisT;
document.getElementById('VisningDiv').style.display = 'block';
</script>

Får syntax fejl i linien:
ma = thisT.match(new RegExp('' + ordArr[j] + '\)' , "gi" ));

Jeg troede jeg kunne escape ) med \) - men det virker ikke?
Avatar billede netsrac Nybegynder
08. maj 2008 - 10:49 #1
Lukker - fandt selv løsningen.
Avatar billede roenving Novice
08. maj 2008 - 12:06 #2
-- og svaret er, at der skal dobbelt-escapes, da escapingen fortolkes to gange, og derfor 'skrælles' en enlig escaping fra allerede i streng-behandlingen og er således ikke til stede, når regExp'en skal fortolkes !-)

  ma = thisT.match(new RegExp(ordArr[j] + '\\)' , "gi" ));
Avatar billede netsrac Nybegynder
09. maj 2008 - 21:13 #3
roenvig > Det havde jeg faktisk også prøvet, men fik stadig fejl, havde lige glemt at parantesen skulle escapes igen, når jeg kørte linien:

thisT = thisT.replace(new RegExp('' + ma[k] + '' , "g" ), "<a href=\"/page96.aspx?recordid96=" + ordIDArr[j] + "\" class=\"inlinelink\">" + ma[k] + "</a>");

Så det var vist det man kalder et svagt øjeblik for mig :)
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

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