Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (https://javascript.ru/forum/misc/50853-regulyarnoe-vyrazhenie.html)

terminator-101 15.10.2014 16:53

Цитата:

Сообщение от danik.js
if (!(input == '' || input == Infinity || isNaN(input))) {

}

А ты уверен, что ему это ветвление вообще нужно? Может достаточно вообще одного isNaN? по-моему, Infinity и "" и даже \n\n дают false на isNaN

danik.js 15.10.2014 17:05

terminator-101, да, с пустой строкой я затупил. Я наоборот, получается, запретил пустую строку.

А с Infinity затупил ты. Потому что Infinity - это число. Но мы его числом считать не хотим, поэтому отметаем.

danik.js 15.10.2014 17:10

Вот правильный вариант. Хотя проверка на пустоту не обязательна. Просто для наглядности, что пустую строку принимаем. И для уменьшения лишних расчетов (тупо из принципа).
if (input == '' || !(input == Infinity || isNaN(input))) {

}

terminator-101 15.10.2014 17:10

danik.js,
А с такой вот хренью что делать?
isNaN("\t")// false

Ant_Jhon 15.10.2014 17:11

Все решилось паттерном терминатора, напомню задача была в том чтобы проверить на валидность введенную сумму, подходят числа вида n.n .n n. а так же пустая строка, событие вешается на кнопку сейв. то есть если ничего не ввели, то все равно можем сохранить и потом вернуться к заполнению. проверка на инфинити вообще тут странное лишнее дело, проверка на не число проходить не будет как сказал терминатор тк передается строка

terminator-101 15.10.2014 17:15

Ant_Jhon,
Только имей в виду, что если ты будешь проверять как ты ранее показывал, типа re.test(input), у тебя будут проходить строки типа "foo10bar", если тебе надо то, что строка содержит ТОЛЬКО эти совпадения и ничего более, или ТОЛЬКО ОДНО из этих совпадений, и ничего более, тут надо другое решение искать.

danik.js 15.10.2014 17:18

Цитата:

Сообщение от Ant_Jhon
проверка на не число проходить не будет как сказал терминатор тк передается строка

Че? Где он так сказал? Все там в порядке.
Цитата:

Сообщение от Ant_Jhon
проверка на инфинити вообще тут странное лишнее дело

Ну а вдруг кто-нибудь введет Infinity в инпут :D

Пока трабла в этом:
Цитата:

Сообщение от terminator-101
isNaN("\t")// false


terminator-101 15.10.2014 17:21

Цитата:

Сообщение от Ant_Jhon
проверка на не число проходить не будет как сказал терминатор тк передается строка

не, это я ступил там, isNaN как раз проверяет строки (там, видать, если число подается, приводится к строке). Поэтому, тебе это должно подойти, это проще, только я вот не уверен, что все возможные символы там будут корректно проходить, как знак табуляции, например, хз, нужны они тебе или нет, а так -- подходит вроде бы.

danik.js 15.10.2014 17:27

Думаю стоит просто удалять пробелы через input.trim(). При копипасте часто добавляется пробел справа, trim() бы тут помог.

terminator-101 15.10.2014 17:31

Цитата:

Сообщение от danik.js
пробел справа

Справа да, а если в середине?


Часовой пояс GMT +3, время: 12:14.