Буквенно-цифровой, тире и подчеркивание, но без пробелов регулярное выражение проверить JavaScript


попытка проверить ввод с помощью регулярного выражения.

поле должно содержать только буквенно-цифровые символы, тире и подчеркивания и не должно содержать пробелов.

однако, приведенный ниже код позволяет пространство.

чего мне не хватает?

var regexp = /^[a-zA-Z0-9-_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
    { alert('invalid'); }
else
    { alert('valid'); }
5 62

5 ответов:

однако, приведенный ниже код позволяет пространство.

нет, это не так. Однако, это будет только на входе с длиной 1. Для входов с длиной больше или равной 1, вам нужно + после класса символов:

var regexp = /^[a-zA-Z0-9-_]+$/;
var check = "checkme";
if (check.search(regexp) == -1)
    { alert('invalid'); }
else
    { alert('valid'); }

обратите внимание, что ни - (в данном случае), ни _ нужно экранирование.

вы должныN не используйте string.матч но регулярное выражение.прототип.тест (т. е. /abc/.test("abcd")), а не строку.поиск() если вас интересует только логическое значение. Вам также нужно повторить свой класс персонажа, как описано в ответе Энди E:

var regexp = /^[a-zA-Z0-9-_]+$/;

есть глупые ошибки. Так что напишите здесь, Если кто-нибудь найдет это полезным

  1. -\._ - означает, дефис, точку и символ подчеркивания
  2. \.-_ - означает все знаки в диапазоне от точки до подчеркивания

не избежать подчеркивания. Может быть, это какая-то странность.

этот синтаксис немного более лаконичен, чем ответы, которые были опубликованы до этого момента, и достигает того же результата:

let regex = /^[\w-]+$/;