expression-evaluator-c-sharp icon indicating copy to clipboard operation
expression-evaluator-c-sharp copied to clipboard

ISNUMBER returns true only if the text contains at least a decimal separator

Open gbellini79 opened this issue 1 year ago • 1 comments

Hi @matheval,

it looks like the ISNUMBER(value) function returns true only when the text is a number with a decimal separator. The regex used to check the value is /^-?\d*(\.\d+)+$/ with the (\.\d+)+ bit meaning one or more group of characters consisting of a point and one or more digit.

I think something like this could work better: /^-?\d*\.?\d+$/ Or, if you want to accept numbers with a trailing dot like "123.", you can change the last \d+ to \d*: /^-?\d*\.?\d*$/

Example: regexr.com/7bkvf

As a workaround I had to use ISNUMBER(CONCAT(value, '.0')).

Thank you in advance

gbellini79 avatar Apr 06 '23 12:04 gbellini79

I submitted pull request #14 that should fix this issue.

gbellini79 avatar Apr 11 '23 07:04 gbellini79