Avatar billede claushelth Nybegynder
28. juni 2003 - 16:24 Der er 18 kommentarer og
1 løsning

RegExp hvad betyder $

RegExp  hvad betyder $

jeg er ny til RegExp, og skal have lavet validering på nogle felter i en form.

sider og tester med dette eks.

navn_re = /^[0-9\+]/;
navn_re = /^[0-9\+ ]+$/;
tester efter om der kun er tastet tal i feltet

hvad betyder $ i den nederste for udtrykket?
og hvad betyder + (det første) i denne sammenhæng?
jeg har forsøgt både med og uden pluset og det giver samme resultat?

claus
Avatar billede claushelth Nybegynder
28. juni 2003 - 16:36 #1
ok, jeg fandt selv ud af $ den vener med at matce til hele inputet er kørt igennem, og det vil jeg jo gerne, men hvad foreskal gør +'et så??
Avatar billede claushelth Nybegynder
28. juni 2003 - 16:56 #2
fandt også ud af det:
i dette sammen hæng betyder det + et mellemrum inden for []
Avatar billede roenving Novice
29. juni 2003 - 02:39 #3
^ The match must occur at the beginning of the string.

$ The match must occur at the end of the string.

+ Matches one or more times.

\ Used to find literal or specified characters.

Jeg tror at det du har brug for er: /^[\d\+ ]+$/g
hvor g'et betyder søg overalt ...
Avatar billede claushelth Nybegynder
29. juni 2003 - 10:29 #4
okay.. takker for kommentaren, men jeg forstår ikke hvorfor man både kan have ^ og $ med i samme regexp, som jeg kan se det modsiger de hinanden. Enten skal match være i starten af string, altså med det samme der er nogle der stemmer så er den god, ellers skal den vente til den har læst hele udtrykket, og så se om der er et match??

Jeg forventer ikke svar da spørgsmålet jo egnetlig er lukket :o)
Avatar billede nielle Nybegynder
29. juni 2003 - 10:43 #5
Hvis du har 2 forskellige linjer i det du forsøger at matche imod:

1) 6377882+6662+556 553+26
2) 6377882+6662+556 553+26 qwerty

- så vil din første /^[0-9\+]/ matche begge to, mens din anden /^[0-9\+ ]+ kun vil matche den første.
Avatar billede nielle Nybegynder
29. juni 2003 - 10:46 #6
^og $ kaldes ankre og ankre søgningen mod starten hhv. slutningen af linjen (f.eks. matcher /^$/ tommme linjer)

+ og * er multiplyere: + betyder 1 eller flere gange, og * betyder 0 eller flere gange.

g
Avatar billede claushelth Nybegynder
29. juni 2003 - 10:47 #7
som jeg forstår det så betyder +'et ikke + men at den skal kigge efter et eller flere tegn...

Jeg er kun begynder så jeg ved sikkert ikke hvad jeg snakker om :-)
Avatar billede nielle Nybegynder
29. juni 2003 - 10:47 #8
din anden /^[0-9\+ ]+ kun

- skulle selfølgelig have været:

din anden /^[0-9\+ ]+$/ kun
Avatar billede claushelth Nybegynder
29. juni 2003 - 10:49 #9
okay...jeg ved at jeg skal sætte mig ned og læse lidt på emnet, jeg kan ikke rigtig få overblikket lige nu...men ellers tak for kommentarerne.
Avatar billede nielle Nybegynder
29. juni 2003 - 10:49 #10
Korrekt, "+" betyder som sagt "1 eller flere gange". Hvis du har brug for at matche imod et "+" tegn så skal det escapes: "\+"
Avatar billede nielle Nybegynder
29. juni 2003 - 10:50 #11
Regulære udtryk er et utroligt stærkt redskab! Lær dem!!! :^)
Avatar billede claushelth Nybegynder
29. juni 2003 - 10:51 #12
ahh okay, så det er derfor jeg bliver forvirret...ham jeg lånte det fra skulle bruge det til noget lønsystem, hvor han sikkert skulle bruge + og tal, jeg troede kun det var tal..mange tak
Avatar billede nielle Nybegynder
29. juni 2003 - 10:53 #13
Du mangler forresten en + mulitplyer i din første match.

Og hvis du vil verifisere at der kun er taset tal i feltet; Hvorfor indgår der så en \+ i match-udtrykket?
Avatar billede claushelth Nybegynder
29. juni 2003 - 10:54 #14
jep...det er allerede væk :-)
Avatar billede nielle Nybegynder
29. juni 2003 - 10:57 #15
Hvis du vil matche imod "tom, eller et tal" - /^[0-9]*$/
Hvis du vil matche imod "ikke tom, et tal" - /^[0-9]+$/
Hvis du vil matche imod "tom, et eller flere tal" - /^[0-9 ]*$/
Hvis du vil matche imod "ikke tom, et eller flere tal" - /^[0-9 ]+$/
Avatar billede nielle Nybegynder
29. juni 2003 - 10:59 #16
I øvrigt kan man bruge \d i stedet for at skrive 0-9 (men jeg foretrækker personligt den sidste variant). \d står for "digit (ciffer).
Avatar billede claushelth Nybegynder
29. juni 2003 - 11:01 #17
undskyld men er din nr 1 og 3 ikke det samme?
og 2 og 4 også?

Nummer et kan vel også være flere tal?
Avatar billede nielle Nybegynder
29. juni 2003 - 11:09 #18
Ad 1) Nej, de er ikke det samme, der er brugt hhv * og + i dem.

Ad 2) Det kommer an på hvad du mener med "et tal". Min match tillader ikke at der er mellemrum. Den matcher imod "1", "11" og "17647282" men ikke imod "12 4".
Avatar billede roenving Novice
30. juni 2003 - 00:57 #19
Jeg vil så mene  at \d er en mere præcis angivelse end [0-9] ... men vi er jo nok ude i noget smagssag ...
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