Удаление указанных c повторяющихся специальных символов в строке, но сохранение хотя бы одного в каждом случае с регулярным выражением? - PullRequest
0 голосов
/ 19 июня 2020

Я новичок-i sh в JS, и регулярные выражения меня сильно сбивают с толку, поэтому я борюсь и гуглил уже горячую минуту. Я нашел здесь аналогичный вопрос Regex, удаляя повторяющиеся символы, но сохраняя хотя бы один , но все еще не могу понять это с помощью специальных символов c. (/*-+.)

Я создаю калькулятор в javascript и пытаюсь предотвратить такой ввод, если кнопка оператора нажимается несколько раз:

6 *** 6 /// 5 ** 3 ... 2 --- 1 ++ 9

и превратите его в

6 * 6/5 * 3.2 - 1 + 9

вместо этого, но по-прежнему разрешает повторение операторов или десятичных дробей в разных местах. Таким образом, удаление повторяющихся символов происходит несколько раз подряд. Я пытался проверить, является ли последний символ ввода повторением значения кнопки оператора, которую вы нажимаете, но это кажется неуклюжим. Я думаю, что регулярное выражение может быть лучшим способом сделать это? Поправьте меня, если я ошибаюсь, пожалуйста. Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Вместо replacing вы можете предотвратить событие.

document.getElementById("in").addEventListener("keypress", (evt) => {
  const value = evt.target.value;
  (value.indexOf("*") > -1 ||
    value.indexOf("+") > -1 ||
    value.indexOf("-") > -1) &&
    evt.preventDefault();
});
0 голосов
/ 19 июня 2020

Комментарий Ника помог! Я думал, что пробовал его решение раньше при устранении неполадок, но оказалось, что я испортил форматирование раньше, и он все поправил! Спасибо! Однажды я пойму регулярные выражения. (^:

let regex = /([./*+-])\1+/;
text.textContent = text.Content.replace(regex, '$1');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...