matheval / expression-evaluator-c-sharp

Matheval is a mathematical expressions evaluator library written in C#. Allows to evaluate mathematical, boolean, string and datetime expressions
https://matheval.org/
MIT License
110 stars 30 forks source link

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

Open gbellini79 opened 1 year ago

gbellini79 commented 1 year ago

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 commented 1 year ago

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