#javascript #algorithm
Вопрос:
Я хочу проверить, есть ли в моей строке только буквы, цифры или подчеркивание. У меня есть этот код
const str = 'test' for (let i = 0; i lt; str.length; i ) { if (str.charAt(i) != /^(w|_) $/) { return false } }
Несмотря ни на что, он всегда возвращает значение false, хотя просто вводит допустимые значения.
Кто-нибудь может помочь?
Большое спасибо!
Комментарии:
1. Почему вы пытаетесь проверить этот символ за символом для начала, а не только для всей строки за один раз?
2. удалите все, кроме букв, цифр и знаков подчеркивания, затем сравните
.length
с исходной строкой, если она короче, то она ложная3. Основываясь на коде в вашем вопросе (я предоставил фрагмент), вы должны получить сообщение об ошибке.
4. @Энди, это часть большого файла, я просто поместил ту часть, где я боролся. С решением, которое Тим предоставил ниже, работает так, как ожидалось.
5. @CBroe Я просто не знал о существовании test (), поэтому я подумал, что должен проверять символ за символом
Ответ №1:
Просто используйте test()
с шаблоном регулярных выражений ^w
:
var str = 'test_here_123'; if (/^w $/.test(str)) { console.log("only letters, numbers, or underscore"); }
Для справки, w
по определению соответствует буквам, цифрам или подчеркиванию (которые в совокупности известны как «словесные символы»).
Комментарии:
1. Ничего себе, довольно просто и работает правильно. Большое спасибо, Тим!!