Avatar billede repsak Nybegynder
18. december 2003 - 23:45 Der er 20 kommentarer og
1 løsning

Må ikke matche udvalgte ord

Jeg skal have et udtryk, som fortæller at
Kasper, Lars, Peter
ikke må indgå i strengen.

Hej jeg er Kasper og spiller bold (er ikke OK)
Hej jeg er Uffe og spiller bold (er OK)

jeg har ekspermenteret med ^ men med uheld... Nogle som kan hjælpe?
Avatar billede roenving Novice
18. december 2003 - 23:51 #1
Skal du bare have et svar på det ?-)

javascriptsk:

if(value.match(/[(Kasper)(Lars)(Peter)]/gi))
//ikke ok
}
Avatar billede repsak Nybegynder
18. december 2003 - 23:56 #2
Det virker ikke...
Jeg troede at man skulle bruge |...?
Avatar billede roenving Novice
18. december 2003 - 23:58 #3
Det har du helt ret i, lidt sovende indgangsvinkel !-)

function test(value){
if(value.match(/(Kasper)|(Lars)|(Peter)/gi)){
  alert(value.match(/(Kasper)|(Lars)|(Peter)/gi)[0] + " må ikke indgå i strengen !-|");
}}
Avatar billede repsak Nybegynder
19. december 2003 - 00:04 #4
hmm der er en af os to, som har vært på en ordenligt omgang tyrolerdruk... ;-) for det virker umiddelbart heller ikke.

Hvad betyder dit /gi?
Mit eget udkast ser sådan ud:
.*([^Kasper]|[^Lars]|[^Peter]).*
Avatar billede roenving Novice
19. december 2003 - 00:05 #5
Den jeg har smidt lige før virker upåklageligt !-)
Avatar billede roenving Novice
19. december 2003 - 00:06 #6
og g betyder Global search, i betyder case Insensitive !o]
Avatar billede roenving Novice
19. december 2003 - 00:08 #7
-- og på grund af g er det unødvendigt at angive før- og efter-karakterer ...
Avatar billede repsak Nybegynder
19. december 2003 - 10:05 #8
Hmmm burde denne RegEx ikke virke? (C#)

Regex metode = new Regex("/(Kasper)|(Lars)|(Peter)/g", RegexOptions.IgnoreCase|RegexOptions.Compiled);
string s = "Hej jeg er Uffe og spiller bold";

Sorry, men jeg forstår det altså ikke :-)

hvorfor er det / i      /(Kasper?
Avatar billede roenving Novice
19. december 2003 - 11:27 #9
Desværre er der jo nogle forskelle på syntksen for RegExps på tværs af de forskellige sprog, i javascript er // delimiter for en direkte angivet RegExp, mens en ny skal genereres med følgende metode:

var metode = new RegExp("(Kasper)|(Lars)|(Peter)","gi");

-- så // skal nok ikke med i oprettelsen, et gæt kunne være:

Regex metode = new Regex("(Kasper)|(Lars)|(Peter)", RegexOptions.IgnoreCase|RegexOptions.Compiled)|RegexOptions.Global;
Avatar billede repsak Nybegynder
19. december 2003 - 13:35 #10
Jeg kan bare ikke lure hvor det fremgår at navnene IKKE må indgå?
Avatar billede roenving Novice
19. december 2003 - 13:56 #11
Det er fordi jeg synes det er nemmere at programmere, så den reagerer, når de findes ...

-- alternativt kan man selvfølgelig vælge at undlade at reagere, hvis de ikke findes, men programmeringsmæssigt er det bagvendt !-)

-- præcis derfor lagde jeg ud med spørgsmålet, om du skulle vide det, for hvis det har en anden relevans for dig, kan det være, at det er andre veje man skal gå !o]
Avatar billede repsak Nybegynder
19. december 2003 - 14:00 #12
jeps, jeg er nødt til at kunne skrive ord som IKKE må fremkomme. Det andet vil blive alt alt for besværligt... Mit aktuelle problem er langt længere end ovenstående eksempel :-)
Du ved ikke tilfældigvis hvor jeg evt. kan finde løsningen vel?
Avatar billede roenving Novice
19. december 2003 - 14:10 #13
Jamen, princippet i den kode-stump vil jo også give dig den kontrol, for den reagerer, når ordet forekommer ...

Forekommer det ikke, skal der ikke reageres !-)

-- og sådan vil det som regel være, men hvis du har en lang streng, og derinde i ikke må finde bestemte tegn-følger må du gruppere:

Regex metode = new Regex("[^(Kasper)^(Lars)^(Peter)]",

tror jeg ...
Avatar billede repsak Nybegynder
19. december 2003 - 14:23 #14
...virker ikke ;-(...

Problemet er at nogle ord SKAL indgå, og nogle skal IKKE. Jeg ved hvordan man løser den første del, men ikke den anden
Avatar billede roenving Novice
19. december 2003 - 15:09 #15
Skal det foregå på een gang, kunne man ikke lave to tests, først på at alle plus-ord er der, og derefter på at ingen minus-ord er der ?-)
Avatar billede repsak Nybegynder
19. december 2003 - 15:52 #16
jo i teorien godt, men jeg skal bruge ca 15 tests, så hvis de alle skal laves a to gange så bliver det noget juks...
Og jeg skulle mene at reg.Ex godt kunne klare det i én omgang :-)
Avatar billede roenving Novice
19. december 2003 - 15:55 #17
Nu har jeg lige læst mig igennem javascript-manualens afsnit om RegExp, og er kommet til den konklusion, at js RegExp-objektet _ikke_ er beregnet til at 'ikke-finde' men alene beregnet til at kunne teste/returnere om bestemte strenge findes, så negative match kun understøttes på tegn-niveau ...
Avatar billede repsak Nybegynder
20. december 2003 - 11:20 #18
hmm nej hvor nederen...
Tak for indsatsen. Svar hvis du vil :-)
Avatar billede roenving Novice
20. december 2003 - 12:40 #19
Velbekomme '-)

-- erfaring er jo også godt at få ...

Men kan du ikke lave det som funktion, og have dine RegExps som et array (eller bare strengene !-)
Avatar billede repsak Nybegynder
20. december 2003 - 12:57 #20
tjoe, jeg må lige finde ud af hvad jeg vil gøre... *skuffet over reg.exp*
Avatar billede roenving Novice
20. december 2003 - 13:13 #21
-- tak for points ;~}
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