Проверка десятичных чисел в JavaScript — IsNumeric()
А-а-а! Не слушайте ответы input-validation регулярных выражений. RegEx validation неприятен для этого, и я number говорю не только о производительности. С javascript вашим регулярным выражением validations так легко сделать незаметные, что js невозможно заметить ошибки.
Если ecmascript вы не можете использовать javascript-library isNaN()
, это должно работать намного validate лучше:
function IsNumeric(input)
{
return (input - 0) == input && (''+input).trim().length > 0;
}
Вот как это работает:
Выражение javascript-library (input - 0)
заставляет JavaScript выполнять validator приведение типов к вашему .js входному значению; его нужно input-validation сначала интерпретировать validator как число для операции вычитания. Если input-validation это преобразование в число input-validation не удастся, выражение приведет validations к NaN
. Затем этот числовой результат validate сравнивается с исходным значением, которое form-validation вы передали. Поскольку левая .js часть теперь числовая, снова javascript используется приведение типов. Теперь, когда validator ввод с обеих сторон был приведен validate к одному и тому же типу из input-validation одного и того же исходного validate значения, можно подумать, что validate они всегда должны быть одинаковыми number (всегда истинными). Однако validator существует специальное правило, которое number гласит, что NaN
никогда не равно javascript NaN
, поэтому значение, которое javascript-library нельзя преобразовать в число javascript (и только значения, которые javascript нельзя преобразовать в числа), будет js иметь значение false.
Проверка javascript длины предназначена для частного javascript случая с пустыми строками. Также javascript-library обратите внимание, что он numbers не работает в вашем тесте js 0x89f, но это потому, что .js во многих средах это нормальный validations способ определить числовой numbers литерал. Если вы хотите поймать numbers этот конкретный сценарий, вы validations можете добавить дополнительную input-validation проверку. Еще лучше, если input-validation это причина, по которой вы vanilla-javascript не используете isNaN()
, тогда просто input-validation оберните свою функцию вокруг input-validation isNaN()
, которая также может выполнять javascript-library дополнительную проверку.
Таким javascript образом, если вы хотите узнать, можно ли преобразовать значение в число, на самом деле попробуйте преобразовать его в число.
Я вернулся и провел validation некоторое исследование, почему строка validate с пробелами не дала ожидаемого validate результата, и я думаю, что validator теперь понял: пустая строка form-validation приводится к 0
, а не к NaN
. В js этом случае можно просто vanilla-javascript обрезать строку перед проверкой validations длины.
Запуск модульных тестов validator для нового кода, и он терпит validate неудачу только на бесконечных input-validation и логических литералах, и ecmascript единственный раз, когда это javascript должно быть проблемой, - это input-validation если вы генерируете код (действительно, кто validate будет вводить литерал и проверять, является js ли он числовым? Вы должны numbers знать), и генерировать такой код form-validation было бы странно.
Но, опять validator же, единственная причина когда-либо использовать это, если по какой-то причине вам нужно избегать isNaN().
javascript
validation
numbers
Проверка десятичных чисел в JavaScript — IsNumeric()
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.