Проблема с indexOf()

109
21 марта 2018, 06:40

Возникла следующая проблема: код реагирует на ЛЮБОЕ значение, а должен только если там есть английские буквы и/или цифры

if(login.indexOf("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0")){
Answer 1

А не работает, потому, что возвращает значение -1 если этих символов нету в строке, а if (-1) ... будет выполняться всегда.
Следует как минимум указать в условии этот кусочек: !== -1.

var login = "#####"; // Этих символов нету в нижеперечисленном списке 
var index = login.indexOf("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"); 
 
if (index && index !== -1) { 
  console.log(index); 
} else { 
  console.log('Такого символа нету в строке'); 
}

Подробней о .indexOf():

Обратите внимание, что значение 0 не вычисляется в true, а значение -1 не вычисляется в false. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:

'Голубой кит'.indexOf('Голубой') !== -1; // true 
'Голубой кит'.indexOf('Галубой') !== -1; // false
READ ALSO
Наполнить переменную типа rowtype в oracle из php

Наполнить переменную типа rowtype в oracle из php

Всем привет) в общем ситуация) в oracle есть переменная типа rowtype, как мне ее наполнить данными полученными с формы, с помощью PHPСейчас я делаю...

191
Получить данные из строки в корректной кодировке

Получить данные из строки в корректной кодировке

Есть строка вида firstName=%D0%9D%D0%B8%D0%BA%D0%BE%D0%BB%D0%B0%D0%B9&lastName=&patronymic=&phone=80004064909Как получить корректное значение firstName и phone, например? Это не get-запрос,...

153