// betyder afgrænsning af det regulære udtryk (ligesom "" eller ' ' bruges på tekststrenge !-) ^$ betyder at hele tekststrengen skal passe (fra start ^ til slut $) [] bruges som en slags eller-angivelse til at angive at tegnene inde i kan være det ene eller det andet (her enten plus eller minus !-) ? efter betyder måske (altså 0 eller 1 forekomst af det foran !-) \d betyder cifre (0-9) () bruges til at gruppere \. bruges fordi man skal escape tegn, som har en speciel betydning, og punktum betyder ellers et hvilken-som-helst tegn, så det betyder: bogstaveligt taget et punktum ... + betyder et eller flere af det (de !-) foregående tegn
-- derved kommer vi frem til: [+-]? = Muligvis et plus eller minus foran, men ikke nødvendigvis ... \d+ = Et eller flere cifre ... (\.\d+)? = Muligvis et punktum efterfulgt af et eller flere cifre, men ikke et punktum uden cifre efter !o]
\. betyder 'bogstaveligt taget et punktum' og ingen tegn kan der være flere af, hvis ikke man eksplicit angiver det (med et efterfølgende + eller * eller ved en længde-angivelse !-)
-- og i dit første spørgsmål er der en krølle, for en hel masse tegn har en special-betydning, deriblandt _alle_ de tre, som findes inde i de firkantede paranteser, derfor ville jeg _altid_ sørge for at bindestregen var først eller sidst, for den har den special-betydning, at den angiver en range ([a-z] betyder f.eks. alle engelske bogstaver !-)
Så det kræver en særlig opmærksomhed, men som du kan se med punktummet, kan man komme omkring det ved at escape tegnet, altså en backslash foran, så hvis du udvider den skal du escape alle specialtegn:
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.