In a regular expression, I need to know how to match one thing or another, or both (in order). But at least one of the things needs to be there.
For example, the fol
The fully general method, given regexes /^A$/ and /^B$/ is:
/^(A|B|AB)$/
i.e.
/^([0-9]+|\.[0-9]+|[0-9]+\.[0-9]+)$/
Note the others have used the structure of your example to make a simplification. Specifically, they (implicitly) factorised it, to pull out the common [0-9]* and [0-9]+ factors on the left and right.
The working for this is:
[0-9]+, so pull that out: /^(|\.|[0-9]+\.)[0-9]+$/? (i.e. use the equivalence (|a|b) = (a|b)?): /^(\.|[0-9]+\.)?[0-9]+$/\. this time): /^((|[0-9]+)\.)?[0-9]+$/(|a+) is the same as a*, so, finally: /^([0-9]*\.)?[0-9]+$/