javascript - RegEx to match only numbers incorrectly matching -
i'm trying use regular expression in javascript match number or number containing decimal. regular expression looks [0-9]+ | [0-9]* \. [0-9]+
.
however, reason '1a'.match(/^[0-9]+|[0-9]*\.[0-9]+$/)
incorrectly finds match. i'm not sure part of expression matching a
.
the problem alternation. says:
^[0-9]+ # match integer @ start | # or [0-9]*\.[0-9]+$ # match decimal number @ end
so first alternative matches.
you need group alternation:
/^(?:[0-9]+|[0-9]*\.[0-9]+)$/
the ?:
optimisation , habit. suppresses capturing not needed in given case.
you away without alternation well, though:
/^[0-9]*\.?[0-9]+$/
or shorter:
/^\d*\.?\d+$/
Comments
Post a Comment