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

Это то, что у меня есть до сих пор:

function checkTitle(){
    reg = /^[\w ]+$/;
    a = reg.test($("#title").val());    
    console.log(a);
}

До сих пор в моих тестах он ловил все специальные символы, кроме _. Как я могу уловить все специальные символы, включая _ в текущей функции?

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

Спасибо!

Ответ 1

Ваша проблема в том, что \w соответствует всем буквенно-цифровым значениям и подчеркивания.

Вместо того, чтобы анализировать всю строку, я просто ищу любые нежелательные символы. Например

var reg = /[^A-Za-z0-9 ]/;

Если результат reg.test равен true, строка не проходит проверку.

Ответ 2

Поскольку вы заявляете, что новичок в RegExp, я мог бы также добавить несколько советов с ответом. Я предлагаю следующее regexp:

/^[a-z\d ]+$/i

Здесь:

  • Нет необходимости в верхнем регистре A-Z из-за флага i в конце, который соответствует нечувствительным к регистру образом
  • \d специальный символ представляет цифры