20. oktober 2004 - 20:15
Der er
41 kommentarer og 2 løsninger
Hjælp til regex
1. Jeg har følgende regex: /^[1-9][0-9]{0,5}$/ Det skal indeholde et tal mellem 1 - 999999. Men det må også gerne indeholde tallet 0, hvordan gør jeg det ? Jeg har prøvet med: /^0|([1-9][0-9]{0,5})$/ - Men det funker ikke :( 2. Jeg skal bruge et regulært udtryk ligesom det første, men i dette tilfælde må det have op til 2 decimaler. Desuden skal 0 | 0,0 | 0,00 godtages, men ellers må det ikke starte med 0 (som i 1).
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Slettet bruger
20. oktober 2004 - 23:10
#1
1: Hvad med /^(0|[1-9]\d{0,5})$/ 2: Jeg går ud fra, at du udtrykte dig forkert, og f.eks 0,5 er gyldigt. /^(0|[1-9][0-9]{0,5})(,\d{1,2})?$/
Slettet bruger
20. oktober 2004 - 23:11
#2
Forresten, jeg kan ligesågodt bruge \d et sted mere i nr. 2 /^(0|[1-9]\d{0,5})(,\d{1,2})?$/
21. oktober 2004 - 00:08
#3
1: /^\d{1,6}$/
Slettet bruger
21. oktober 2004 - 00:15
#4
roenving: Som jeg forstod det er 012345 ikke en gyldig værdi. Enten et rent 0 eller en værdi, der ikke starter med 0.
21. oktober 2004 - 00:19
#5
Kan være, du har ret, men hvis han skal opsamle værdien, vil det i mange tilfælde være rasende ligegyldigt, så han skulle have den også !-)
21. oktober 2004 - 00:20
#6
Jep, præcis sandbox og ja - jeg udtrykte mig forkert :) Smid et svar!
21. oktober 2004 - 00:25
#7
Hvad er fordelen ved \d fremfor [0-9] ?
21. oktober 2004 - 00:27
#8
3 tegn færre !-)
21. oktober 2004 - 00:30
#10
Ja, men så skal jeg allokere yderligere 3 hjerneceller til at huske hvad \d står for :P
21. oktober 2004 - 00:37
#11
Hmm, hvordan forhindre jeg samtidig (2), at tallet ikke kan være større end 100,00 ?
21. oktober 2004 - 00:38
#12
Sæt du hellere en halv million af til regexps for det er godt nok et hammergodt værktøj !-) -- og egentlig er der logik i de fleste \x-ting i regexps: \d = digits, cifre \w = word-characters, 'ord'-tegn (a-z, 0-9 og _ !-) \s = (white-)space-characters, altså ikke aftegnede tegn, såsom mellemrum, tabulator, linje- og sideskift \b = (word-)borders, altså ord-grænse -- at der så er alle de andre special-tegn at tænke i er så en hel anden sag !o]
21. oktober 2004 - 00:39
#13
/^(0|100(,00)?|[1-9]\d?(,\d{1,2})?$/
Slettet bruger
21. oktober 2004 - 00:41
#14
Og fordelen ved \d og de andre er, at de kan bruges inde i [] og at de meget let kan "negeres".
21. oktober 2004 - 01:10
#15
Den sidste fungerer ikke roenving :(
Slettet bruger
21. oktober 2004 - 01:21
#16
Måske: /^(0|100(,0{1,2})?|[1-9]\d?(,\d{1,2})?$/
21. oktober 2004 - 08:42
#17
Der mangler vidst en ) et sted, den kan jeg heller ikke få til at virke :P
Slettet bruger
21. oktober 2004 - 10:53
#18
Det har du da ret i. /^(0|100(,0{1,2})?|[1-9]\d?(,\d{1,2})?)$/
21. oktober 2004 - 14:51
#19
Den godtager ikke 0,0 eller 0,00 :(
21. oktober 2004 - 14:57
#20
Måske sådan: /^(0|100(,0{1,2})?)|[1-9]\d?(,\d{1,2})?$/
21. oktober 2004 - 17:29
#21
Nope, fungerer heller ikke, her godtages fx 012 eller 454,15.
21. oktober 2004 - 17:32
#22
Vi kan da sætte endnu et sæt paranteser på: /^((0|100(,0{1,2})?)|[1-9]\d?(,\d{1,2}))?$/
21. oktober 2004 - 17:53
#23
Nope, heller ikke :(
21. oktober 2004 - 17:57
#24
Det er stadig denne der er bedst: /^(0|[1-9]\d{0,5})(,\d{1,2})?$/ Den godtager desværre værdier over 100, men pyt, det må jeg leve med :P
21. oktober 2004 - 17:58
#25
Forstår jeg ikke, for den virker f.eks. på denne: <input id="minInput" name="minInput" type="text" value="Tom" onchange="alert(this.value.match(/^((0|100(,0{1,2})?)|[1-9]\d?(,\d{1,2}))?$/));" size="20">
21. oktober 2004 - 18:00
#26
21. oktober 2004 - 18:01
#27
I fedt
21. oktober 2004 - 18:03
#28
onchange="alert(this.value.match(/^(100(,0{1,2})?|(0|[1-9]\d?)(,\d{1,2}))?$/));"
21. oktober 2004 - 18:18
#29
Den godtager tal over 100...men der er jo heller ikke nogen der har sagt at en halv million hjerneceller er nook ;)
21. oktober 2004 - 18:23
#30
Ikke hos mig, der returnerer den konsekvent null, hvis der er tal, som ikke passer ...
21. oktober 2004 - 20:18
#31
Har du prøvet at taste 0 ind ? Eller 45 ?
21. oktober 2004 - 20:21
#32
Sådan her: /^((100(,0{1,2})?)|((0|[1-9]\d?)(,\d{1,2})?))$/ Så vidt jeg kan se virker det nu...tjekker lige noget mere...
21. oktober 2004 - 20:21
#33
0 virker efter hensigten, men der var en parantes, som lige var røget forkert, så: onchange="alert(this.value.match(/^(100(,0{1,2})?|(0|[1-9]\d?)(,\d{1,2})?)$/));"
21. oktober 2004 - 20:25
#34
Jep, den virker vidst!!! Roenving, du kan også ligge et svar, så kan I dele :)
21. oktober 2004 - 20:27
#35
I øvrigt, denne virker perfelt, men kan den forkortes: /^[-a-zA-ZæøåÆØÅ\d]{1,50}$/ Er der andre tegn end - man bør godkende i navne ?
21. oktober 2004 - 20:27
#36
Oki '-)
21. oktober 2004 - 20:31
#37
\w betyder a-z, 0-9 og _, men du vil måske ikke godkende underscore ?-) -- og så er der jo en stribe almindelige bogstaver på dansk: ü, ö, é osv. -- og lidt forkortes kan den under alle omstændigheder, for du kan bruge ignoreCase-parameteren: /^[-a-zæøå\d]{1,50}$/i !-)
21. oktober 2004 - 20:34
#38
/i virker ikke på æøå
21. oktober 2004 - 20:44
#39
Det gør det da i mine browsere ?-) Hvilke browsere virker det ikke i ?-)
21. oktober 2004 - 20:51
#40
Måske har det noget med karakter-sættet at gøre, jeg bruger iso-8859-1 ?-)
21. oktober 2004 - 21:02
#41
Jeg bruger: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> Det virker ikke.
21. oktober 2004 - 21:02
#42
Slettet bruger
21. oktober 2004 - 22:44
#43
Ihvertfald i PHP, så vil \w indeholde flere tegn alt efter sprogindstillinger. De tegn, det drejer sig om er f.eks æøåÆØÅ og andre accent-bogstaver, som öç og den slags. Og husk, man kan lave meget fis med omvendte tegngrupper: /^[^\W_]{1,50}$/i matcher alle bogstaver og tal, men ikke underscore. (og heller ikke minus.)
Kurser inden for grundlæggende programmering