Avatar billede arnebalsby Nybegynder
15. juni 2009 - 17:31 Der er 12 kommentarer

Regular Expression

Hej .

Jeg er så småt ved at forstå regular expressions.

Har lavet den her:

var reg = new RegExp(\" [A-Z]+ \",\"g\");

Som finder alle Upper Case Only ord som er omkrandset af mellemrum i en sætning.

1. Hvordan kan jeg lave den om, så at den kun finder upper case ord som er imellem 3 og 6 karraktere lange ?

2. Hvordan kan jeg lave den om så at den også fanger upper case ord som er i begyndelsen eller enden af stringen ?

Med venlig hilsen
Avatar billede arnebalsby Nybegynder
15. juni 2009 - 17:32 #1
var reg = new RegExp(' [A-Z]+ ','g');
Avatar billede arnebalsby Nybegynder
15. juni 2009 - 17:32 #2
Altså det er der her regular expresion jeg har lavet:
var reg = new RegExp(' [A-Z]+ ','g'); 

(det i starten er noget eksperten.dk har fumlet rundt med)
Avatar billede ebusiness Nybegynder
15. juni 2009 - 18:35 #3
Skal ordene være omkranset af netop mellemrum, eller er det bare ord som også kan være adskilt af . , eller lignende?

I første tilfælde: var reg = new RegExp("^[A-Za-z]{3,6}(?= )| [A-Za-z]{3,6}(?= )| [A-Za-z]{3,6}$","g")

Ellers: var reg = /\b[A-Za-z]{3,6}\b/g

(Og du behøver ikke at give mig dine sidste point)
Avatar billede mk_ Nybegynder
15. juni 2009 - 18:37 #4
1. var reg = new RegExp(' [A-Z]{3,6} ','g');
Avatar billede mk_ Nybegynder
15. juni 2009 - 18:38 #5
ebusiness - undskyld jeg spørger her, men hvad er \b?

for hvis det var mig, så ville jeg bruge \s i stedet..
Avatar billede ebusiness Nybegynder
15. juni 2009 - 19:25 #6
\b er en for/efter betingelse som betinger at der skal være en orddeling før/efter udtrykket, dels betyder det at mellemrumskarakteren ikke kommer med, og dels betyder det at jeg kan finde to ord som står efter hinanden. Det udtryk som du har skrevet mk_ finder ikke to ord som står efter hinanden.
Avatar billede arnebalsby Nybegynder
15. juni 2009 - 22:55 #7
Hvad betyder (?= ) eller bare ?=    . ?

Har lige lavet min egen
</*([A-Za-z][A-Za-z0-9]*)\b[^>]*>
Som finder alt HTML.

Det er fordi jeg vil godt finde de der uppercase ord, og udskifte dem med noget. Men på en eller anden måde vil jeg gerne bevare evt html.

Men jeg tror nu jeg her er ude i noget, som jeg ikke bare kan klare med et kæmpe stort regex.
Avatar billede ebusiness Nybegynder
15. juni 2009 - 23:36 #8
(?= ) betyder at der skal være et mellemrum efter den fundne streng.

Hvad er det du laver? Hvad er formålet?
Avatar billede arnebalsby Nybegynder
16. juni 2009 - 12:58 #9
Genialt med det der ?= noget jeg har kigget efter.

Det jeg skal er at alle amerikanske aktie navne i noget html skal udskiftet med et link til aktien på google finance . f.eks. CSCO skal udskiftes med (link til) http://www.google.com/finance?q=CSCO .

Men jeg vil gerne undgå at lave udskiftninger hvis der pludselig står noget inde i html tags som kunne ligne et aktie navn.

***
Kan det monstro lade sig gøre at skrive \b[A-Za-z]{3,6}\b og så foran og bagefter lave et eller andet med det der ?= så at man ligesom angiver at der før ikke må være en < uden at der foran den har stået en >, og efter ikke må være en > uden at der først har været en < ?

(eller er vi her ude et sted hvor regular ekspression må give op ?).

Med venlig hilsen
Avatar billede ebusiness Nybegynder
16. juni 2009 - 17:10 #10
JavaScript regular expressions er ikke så omfattende. Er du sikker på at det ikke er noget du bør gøre på serversiden det her? Fx med Perl regexps i PHP. Hvorfor viser din side ikke navnene som links til at starte med?

Men altså generelt ligger det her nok lige på kanten af hvad regexp bør bruges til.
Avatar billede arnebalsby Nybegynder
16. juni 2009 - 17:32 #11
Tak.

Det skal være javascript, det er noget som arbejder sammen med et joomla richtextarea på en underlig måde.

Ved du hvordan man laver det der (?= ) foran et udtryk. Jeg forstår det ikke rigtigt, jeg synes ikke jeg kan se nogen steder hvad = skulle betyde.

Jeg har et seperat spm her:
http://www.eksperten.dk/spm/878431
Avatar billede ebusiness Nybegynder
16. juni 2009 - 23:47 #12
Så vidt jeg har kunnet læse mig til kan det ikke lade sig gøre foran et udtryk. Jeg tror du må slagte ideen om at gøre det rent med regexp.
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