#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, "")