12. november 2002 - 11:42Der er
6 kommentarer og 1 løsning
Cirklens ligning i Javascript
Jeg ved kun meget lidt om reg.exp., og vil derfor høre om, der er der kan fortælle mig, hvordan jeg i javascript kan afgøre, om en streng er skrevet med 'syntaxen' "(x-n)^2+(y-n)^2=n" (hvor 'n' er et vilkårligt tal; ikke kun heltal)
Det ser måske lidt uhyggeligt ud, men kigger man nærmere efter er det ikke så galt endda. Vi starter med del-udtrykket for et tal (det du kalder 'n', jeg går ud fra at der kan være tale om forskellige tal), det går identisk igen 3 gange undervejs:
[0-9]+([,.][0-9]+)?
Et positivt antal cifre, efterfulgt af 0 eller 1 forekomst af: komma-eller-punktum efterfulgt af et positivt antal cifre.
Vi har altså
^\(x[-+] Begyndelsen af strengen fulgt af (x fulgt af + eller -
? betyder '0 eller 1 forekomst af det umiddelbart foregående', her indholdet af parantesen.
^ forrest betyder 'stregens begyndelse', som det er brugt her, betyder det at der ikke må være nogetsomhelst i strengen før den første ( Afsluttende $ har samme betydning for slutningen af strengen.
Samtlige anvendelser af \ er for at 'escape' tegn, der ellers har specialbetydning regulære udtryk.
var regex = new RegExp( /^\(x[-+][0-9]+([,.][0-9]+)?\)\^2\+\(y[-+][0-9]+([,.][0-9]+)?\)\^2=[0-9]+([,.][0-9]+)?$/ );
var txt = <den streng der skal undersøges>;
if (txt.match(regex)) { // matcher } else { // matcher ikke }
Synes godt om
Ny brugerNybegynder
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.