JavaScript: исключите число с десятичной дробью .0

#javascript #string #integer #numbers #conditional-statements

Вопрос:

Мне нужен ваш совет (я новичок в JS).Это мой код:

 function fn(pin) {

  if (pin.length === 4 amp;amp; !isNaN(pin) amp;amp; pin % parseInt(pin) === 0 amp;amp; Number(pin) > 0) {
    return true;
  }
  return false
}

console.log(fn("123a.78")) // false 

Поэтому я проверяю длину, что это число, что оно целое и что оно больше 0.
Но как я должен написать условие для исключения строк этого типа: «12.0» (потому что оно также имеет длину 4 и также является целым числом)? Если я попробую выполнить условия с помощью pin.parseFloat или parseInt, это также повлияет на строки типа «1234». Или, может быть, я пишу их неправильно…

Комментарии:

1. Иди с регулярным выражением, например return /^d{4}$/.test(pin); . На самом деле здесь нет никакой математики.

2. Спасибо за быстрый ответ! Похоже, регулярные выражения могут помочь во многих ситуациях в JS. Я их еще не изучал )). Сейчас пойду учиться )

3. Вы просто ищете четырехзначное целое число после анализа строки? Или должно 0123 быть действительным?

4. 0123 тоже будет хорошо. Я хочу исключить только числа с десятичным числом, равным 0 (например, 16.0).

Ответ №1:

Я бы использовал регулярное выражение для проверки входных данных. Регулярное выражение для проверки только 4 цифр будет выглядеть следующим образом: /^[0-9]{4}$/

В регулярных выражениях есть методы, позволяющие им проверять, соответствуют ли переменные их типу. Например:

 const pin = '1234';
const pin2 = '12.4'
const regExp = /^[0-9]{4}$/

regExp.test(pin) //returns true
 

в то время как:

regExp.test(pin2) //returns false

Вы можете использовать эту проверку в качестве условия в ваших условиях if/else для выполнения необходимого вам кода.

учебник по бесплатному кодированию регулярных выражений https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/#es6

Игровая площадка регулярных выражений: https://regex101.com/