Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Строка или число в string?

#javascript #html


Пользователь вводит данные:



//В скрипте пытаюсь рассуждать,что если это не строка, то выводить ошибку
var registration = document.getElementById("registration");
registration.onclick = function() {
  var name = document.getElementById("name").value;
  if (typeof(name) === "string") {
    alert("Вы зарегистрированы");
  } else {
    var nameColor = document.getElementById("name");
    nameColor.style.borderColor = "#FF0000";
    alert('Имя введено некорректно')
  }
}

Введите имя:

И собственно вопрос: как в input узнать, что ввел пользователь: число или строку? К примеру: "12421" и "acaca". Как разделить первый и второй пример?


Ответы

Ответ 1



Input[type="text"] всегда возвращает символы в качестве строки, хоть вы и можете написать там одни цифры. Для такой валидации лучше использовать регулярные выражения. var registration = document.getElementById("registration"); registration.onclick = function() { var input = document.getElementById("name"); var letters = /^[A-Za-z]+$/; if (input.value.match(letters)) { alert("Вы зарегистрированы"); } else { input.style.borderColor = "#FF0000"; alert('Имя введено некорректно'); } }
Введите имя:


Ответ 2



function stringOrNumber(str) { if (isNaN(str)) { return "string"; } else { return "number"; } } console.log(stringOrNumber("12421")); console.log(stringOrNumber("acaca"));

Ответ 3



А можно вообще без скрипта, использовать атрибут pattern )


Ответ 4



Есть много разных способов проверки строки на число, всё зависит от конкретной задачи, например, с помощь функции Number. Приведу несколько примеров (сначала код потом результат): Number('wrwet'); NaN Number('1.3'); 1.3 Number('1e3'); 1000 Как видно эта функция хорошо справляется с задачей, НО она пропускает экспоненциальную форму записи числа, а такой вариант зачастую не подходит. Можно добавить проверку, является ли значение конечным числом. Лично я обычно делаю такую проверку: if( !isNaN('1e1000') && isFinite('1e1000') ) { console.log( 'конечное число'); } else { console.log( 'не число (или очень большое число или Infinity'); } Ещё важно учитывать должно ли число быть целим или может быть вещественным, может ли оно быть отрицательным или только положительным.

Ответ 5



В JavaScript есть оператор typeof: typeof undefined // "undefined" typeof 0 // "number" typeof true // "boolean" typeof "foo" // "string" typeof {} // "object" typeof null // "object" typeof function(){} // "function"

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

Отправить комментарий