Если есть правила, которые могут окончательно определить, что они имели в виду, тогда вы можете закодировать логику. С этой проблемой, однако, невозможно узнать намерение в каждом случае:
1,001 === 1.001 or 1001
Кроме того, даже если любая «лучшая» логика может предполагать, что числа типа «1,01» однозначны, такая запись может быть опечаткой «1,001». Насколько это вероятно, зависит от того, какие данные вы собираете.
Если люди редко используют разделитель тысяч, то ваша логика кажется хорошей. Однако если вы хотите быть на 100% уверены в своих намерениях, единственный способ убедиться в этом - спросить их, что они имеют в виду в таких случаях. Например. если кто-то вводит 1,001
или 1.001
, то не проходит проверку, но перекодирует его как «1,001.0» (или .00, если имеет дело с валютой), чтобы устранить неоднозначность, вынуждая его пересмотреть его.
На практике вы, вероятно, могли бы принести больше вреда, чем пользы, с таким изобилием осторожности, поскольку люди на самом деле не используют разделитель тысяч. Я бы придерживался того, что у тебя есть.