#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/