Как доделать регулярное выражение для проверки значения на дробность?

105
28 марта 2022, 23:10

Есть функция, которая проверяет значение на дробное

const isFloatNumberValue = (value: string) => (value.match(/^\d+([.,](\d{1,2})?)?$/g))

Ошибка в том, что мы можем вписать 00,01, а должно быть 0,01. Как исправить?

Answer 1

Шаблон regexp:

--Старая версия
^(?!0{2,})\d+([.,]\d+){0,1}$

Соответствуют шаблону:12,33; 0,01; 12,00; 11; 1,1234567
Не соответствует шаблону: 00,01; 124,; 0000,12

UPD, действительно 01,11 пропускался предыдущей версией, исправил:

^(?!0{1,}\d+)\d+([.,]\d+){0,1}$

Если есть цифры после ноля и до запятой, совпадения не будет.

Answer 2

По-моему, функция определяющая дробное ли число, должна выглядить как-то так, без всяких регулярок:

const a = '00000.00001'; 
const b = '92929'; 
function isDecimal (str){ 
  return !isNaN(Number(str)) && Number(str) % 1 === 0 
} 
 
function isDecimal_2 (str){ 
  return str.split('.').length === 1; 
} 
console.log(isDecimal(a), isDecimal(b)); 
console.log(isDecimal_2(a), isDecimal_2(b));

Answer 3

input { outline: none } 
:invalid { border: 1px solid red } 
:valid { border: 1px solid green }
<input pattern="^(0|[1-9]\d*)([.,]\d{0,2})?$" required autofocus value="0.12">

Answer 4

В общем, Если с именно одной цифрой до точки или запятой обязательной, то так:

^[0-9][.,][0-9]+$

Специально для пользователя @And скрины с https://regex101.com/

Если необходимо с несколькими нулями перед точкой, то можете воспользоваться следующим выражением:

^[0-9]*[.,][0-9]+$ //В Этом случае будет много чисел до точки и даже пройдёт .123

Если необходимо только с обязательным символом до точки(чтобы .123 не проходило) и неограниченным количеством символов перед ней, то можно так:

^\d+(?:[\.,]\d+)?$

Вариант с ограниченным количеством знаков после запятой 2

^[0-9][.,](\d{1,2})$
READ ALSO
Остановить setInterval() когда переменная 0

Остановить setInterval() когда переменная 0

Когда пользователю приходит новое сообщение, вывожу в title мигание, что новое сообщение как в вк

166
хранение и чтение локальных файлов

хранение и чтение локальных файлов

День добрый! Подскажите как организовать что-то типа локальной БДНужно с локального сайта получать содержимое локальных файлов из того...

113
jquery autocomplete принудительный вызов

jquery autocomplete принудительный вызов

Есть элемент на странице на котором Autocomplete

105