Как разрешить только некоторые определенные символы в строке с помощью jQuery

#jquery #regex #string #escaping

#jquery #регулярное выражение #строка #экранирование

Вопрос:

Я заставляю пользователей вводить некоторые теги. Эти теги должны содержать только символы:

  • [a-z]
  • [A-Z]
  • числа [0-9]
  • и символ -

Если присутствует какой-либо другой символ, его следует удалить из строки.

Возможно ли это? Каков самый быстрый способ сделать это?

Комментарии:

1. Вы можете сделать это с помощью JavaScript, jQuery не нужен. Что вы уже пробовали? Подсказка подсказка: Строка. replace

2. Используйте регулярное выражение, чтобы находить и удалять их с помощью обычного js.

Ответ №1:

Вы можете назначить обработчик keyup события соответствующему input элементу и отфильтровать значения, используя этот код:

 $("input").keyup(function(){
    var value = $(this).val().replace(/[^-a-zA-Z0-9]/g, "");
    $(this).val(value)
})
  
  • $("input") выбирает все input элементы. Настройте этот селектор в соответствии с вашими пожеланиями.
  • keyup Событие запускается, когда пользователь отпускает ключ.
  • $(this).val() возвращает значение текущего элемента ввода.
  • [^-a-zA-Z0-9] соответствует любым недопустимым символам ( /[^-a-z0-9]/i имеет тот же эффект)
  • /g является глобальным флагом, что означает: сопоставлять каждое вхождение регулярного выражения.
  • .replace(/.../g, "") заменяет все недопустимые символы пустой строкой (= удаляет все недопустимые символы)
  • $(this).val(value) изменяет значение текущего элемента ввода на допустимую строку.

Комментарии:

1. … или используйте gi и просто a-z . (Это было бы даже быстрее?)

Ответ №2:

Нет необходимости в jQuery:

 str.replace(/[^a-z0-9-]/ig,"");
  

Удалит все, что не является буквой, цифрой или тире.

Ответ №3:

Простое регулярное выражение заменяет:

 userInputString.replace(/[^a-z0-9-]/ig, "")