@ceeed

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

Добрый день!
В регулярках не силен.. Мне нужно сделать регулярное выражение чтобы можно было записать числа, в т.ч. с плавающей запятой, но не больше 60 и не меньше -60, только числа.
У меня получилось вот так, но все равно могу писать буквы
/-?[0-9]*\.[0-9]*/
  • Вопрос задан
  • 2225 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Регулярка тут не нужна и вредна. Почему бы просто не конвертировать в число и проверять, что в диапазоне?

document.querySelector('input').addEventListener('input', e => {
  const { value } = e.target;
  const num = Number(value);
  const isValid = !isNaN(num) &&
    num <= 60 &&
    num >= -60;

  // что-то делаем с валидным / невалидным
  if (isValid) {
    // мы молодцы, сирену можно выключить
  } else {
    // включаем мигалку и сирены, подсвечиваем красным
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
^[+-]?(?:\d+\.?\d*|\.\d+)$
^[+-]?(?:60(?:\.0*)?|[1-5]?\d(?:\.\d*)?|\.\d+)$ - с ограничением +-60.
Ответ написан
enkryptor
@enkryptor
software developer (TS/JS, python, C#)
Вариант решения:
/^-?\d+\.?\d*$/

Расшифровка:
^ - начало строки
-? - символ "минус" ноль или один раз
\d+ - цифры, минимум одна штука
\.? - символ точки ноль или один раз
\d* - снова цифры, но в этот раз минимум ноль раз
$ - конец строки

Без символов ^$ регексп будет матчиться с подстрокой, например он сработает на строку "123abc"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы