У меня есть код, позволяющий вводить только цифры и буквы:
if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
}
Как изменить фильтр, чтобы разрешить использование символа: + и - и удалить цифры, буквы и другие символы? Это должно быть связано с регулярным выражением, и я не уверен, как это сделать. Какое-нибудь быстрое решение? Благодарю.
1 ответ
Вы можете добавить эти символы в набор символов и удалить те, которые теперь хотите удалить. Однако здесь символ -
имеет особое значение и должен быть экранирован следующим образом:
if (this.value.match(/[^+\-]/g)) {
this.value = this.value.replace(/[^+\-]/g, '');
}
Как указывает inhan в своем комментарии, поскольку дефис является последним символом в группе и, следовательно, однозначен, вполне возможно, что можно опустить экранирование, чтобы иметь только это регулярное выражение:
/[^+-]/g
Но ни один из нас не уверен, будет ли это всегда работать, тогда как сбежавшая форма определенно будет работать.
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки строк, разбора и преобразования. Укажите язык (PHP, Python и т. д.) или инструмент (grep, VS Code, Google Analytics и т. д.), который вы используете. Не размещайте вопросы, требующие объяснения того, что означает символ или чему будет соответствовать конкретное регулярное выражение.