Как изменить регулярное выражение
Необходимо регулярное выражение, которое должно запретить ввод в инпут точек, запятых, буквы ё и +. Однако получилось не совсем. Текущий вариант при помощи дополнительного скрипта сразу же обнуляет инпут при вводе точки, как отдельно, так и в составе дробного числа, но при вводе запятой после цифры очищает инпут только тогда, когда дробное число полностью дописано, а не сразу после ввода запятой.
Кроме того, в консоль выдает такое сообщение: The specified value "undefined" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? <input type="text" id="input"> let input = document.getElementById('input'); input.value = input.value.replace(/[^\d,.]*/g) .replace(/^[^\d]*(\d+([.,]\d{0,5})?).*$/g, '$1'); |
запретить ввод в инпут точек, запятых, буквы ё и +.
<input type="text" id="input"> <script> document.getElementById('input').oninput = function() { this.value = this.value.replace(/[+\.\,ёЁ]/,''); } </script> |
Dilettante_Pro,
там наверно телепат нужен, чтоб предсказывал стирать точку или нет. |
Тут все отлично работает, а когда к себе ставлю, то при вводе дробного числа через точку все ок, но через запятую, например, 5,6, то запятая пропадает, а остается 56.
|
Лучше вообще запретить ввод и точки и запятой
|
Почему запрет на Ё? Я люблю букву ё и ненавижу когда не могу оную ввести.
Если уж убирать ё то заменой на е, иначе будет куча случаев с незамеченным пропуском на её месте. А запятая пропадает потому, что вы попросили чтобы она пропадала. Исключений оговорен не было. |
Цитата:
|
Как? Я ведь написал "запретить ввод в инпут точек, запятых, буквы ё и +"
|
Написал вот так this.value = this.value.replace(/[+\.\,\,ёЁ]/);
вроде работает. только в консоли теперь предупреждение выскакивает The specified value "5undefined5" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? |
|
Часовой пояс GMT +3, время: 00:25. |