Avatar billede montago Praktikant
11. januar 2005 - 10:11 Der er 1 kommentar og
1 løsning

JavaScript kun enkeltstående ord

Jeg er igang med et lille Highighting project... hvor script-ord skal Highlightes ligsom i diverse programmer (Dreamweaver,EditPlus osv...)

problemet er min Regular Expression, som desværre tager alle tilfælde med... Case-INsensitive og HELE Teksten (gi)

nu vil jeg gerne have den til at finde ordene, som står "alene" og ikke i ord

fx
(" asdasd da ").replace("da","[da]") --> " asdasd [da] "
og ikke
" as[da]sd [da] "


Scriptet:________________________________________

<html>
<head>
<script>
function func()
{
    var text = document.getElementById('txt_1').value;
    //Remove scripts
    var text = text.replace(new RegExp('<','gi'),'&lt;');
    var text = text.replace(new RegExp('>','gi'),'&gt;');
   
    //Blue syntax
    var Conv_BlueStrong = 'For,Each,If,Then,Else,Elseif,End,Do,Set,Nothing,MoveNext,MoveLast,MoveFirst,MovePrevious,Step,While,To,Loop,Exit,With,Response,Request,Not,Server,In,True,False'
    var Arr_BlueStrong = Conv_BlueStrong.split(',');
    for(i=0;i<Arr_BlueStrong.length;i++)
    {
        var text = text.replace(new RegExp(Arr_BlueStrong[i],'gi'),'<font class=BlueStrong>'+Arr_BlueStrong[i]+'</font>');
    }
   
    var Conv_DarkStrong = 'var,int,boolean,string,char'
    var Arr_DarkStrong = Conv_DarkStrong.split(',');
    for(i=0;i<Arr_DarkStrong.length;i++)
    {
        var text = text.replace(new RegExp(Arr_DarkStrong[i],'gi'),'<font class=DarkStrong>'+Arr_DarkStrong[i]+'</font>');
    }
   
    var Conv_RedStrong = 'Write,CreateObject,Buffer,MapPath,ServerVariables,EOF,BOF,Querystring,Form,ScriptTimeout'
    var Arr_RedStrong = Conv_RedStrong.split(',');
    for(i=0;i<Arr_RedStrong.length;i++)
    {
        var text = text.replace(new RegExp(Arr_RedStrong[i],'gi'),'<font class=RedStrong>'+Arr_RedStrong[i]+'</font>');
    }
    var text = text.replace(new RegExp('\n','gi'),'<br>');   
       
    document.getElementById('txt_2').innerHTML = text;
}
</script>
<style>
.BlueStrong{
    color:#000099;
    font-weight:bold;
}
.DarkStrong{
    color:#006600;
    font-weight:bold;
}
.RedStrong{
    color:#770000;
    font-weight:bold;
}
body,td,th {
    font-family:Georgia;
    font-size: 9pt;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>
<form onKeyUp="func();">
    <TEXTAREA name="txt_1" rows="4" cols="100"></TEXTAREA><br>
    <p id=txt_2></p>
   
    <object classid="{3b7c8863-d78f-101b-b9b5-04021c009402}" classid="">
    <param name="ClientHeight" value="500">
    </object>
</form>
</body>
</html>
Avatar billede roenving Novice
11. januar 2005 - 20:06 #1
(" asdasd da ").replace(/\bda\b/,"[da]") --> " asdasd [da] "

-- så f.eks.

        var text = text.replace(new RegExp("\\b"+Arr_BlueStrong[i]+"\\b",'gi'),'<font class=BlueStrong>'+Arr_BlueStrong[i]+'</font>');

\b betyder word-boundary altså ord-grænse !-)
Avatar billede montago Praktikant
10. august 2007 - 11:53 #2
brugte følgende til www.mdk-photo.com/Javascript/CambridgeEncoder.html

    out = str.replace(/([a-zA-ZæøåÆØÅ])([\a-zA-ZæøåÆØÅ]{2,})([\a-zA-ZæøåÆØÅ])/gi,
        function($0,$1,$2,$3){
            return $1 + mix($2) + $3;
        }
    );
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
Kurser inden for grundlæggende programmering

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