Попытка проверить ввод на соответствие регулярному выражению.
Поле должно допускать только буквенно-цифровые символы, дефисы и подчеркивания и НЕ должно допускать пробелов.
Однако в приведенном ниже коде допускаются пробелы.
Что мне не хватает?
var regexp = /^[a-zA-Z0-9\-\_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
{ alert('invalid'); }
else
{ alert('valid'); }
javascript
regex
Том
источник
источник
Ответы:
Нет, это не так. Однако он будет соответствовать только на входе с длиной 1. Для входов с длиной больше или равной 1 вам потребуется
+
следующий класс символов:var regexp = /^[a-zA-Z0-9-_]+$/; var check = "checkme"; if (check.search(regexp) === -1) { alert('invalid'); } else { alert('valid'); }
Обратите внимание, что ни
-
(в данном случае), ни_
необходимость экранирования.источник
Вы не должны использовать String.match, а RegExp.prototype.test (ie
/abc/.test("abcd")
) вместо String.search (), если вас интересует только логическое значение. Вам также необходимо повторить свой класс персонажа, как объяснено в ответе Энди Э:var regexp = /^[a-zA-Z0-9-_]+$/;
источник
RegExp.prototype.test
метод, если вас интересуют только логические значения.Этот синтаксис немного более краток, чем ответы, опубликованные к этому моменту, и дает тот же результат:
let regex = /^[\w-]+$/;
источник
Получил глупую ошибку. Так что разместите здесь, если кому-то это будет полезно
-\._
- означает дефис, точку и подчеркивание\.-_
- означает все знаки в диапазоне от точки до подчеркиванияисточник
Не избегайте подчеркивания. Может вызвать неприятные ощущения.
источник
\_
проблемах в JavaScript или других разновидностях регулярных выражений.Попробуй это
"[A-Za-z0-9_-]+"
Должны быть разрешены подчеркивания и дефисы
источник
попробуйте этот, у меня он работает нормально.
"^([a-zA-Z])[a-zA-Z0-9-_]*$"
источник