Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как изменить регулярное выражение (https://javascript.ru/forum/dom-window/75044-kak-izmenit-regulyarnoe-vyrazhenie.html)

DVV 28.08.2018 13:26

Как изменить регулярное выражение
 
Необходимо регулярное выражение, которое должно запретить ввод в инпут точек, запятых, буквы ё и +. Однако получилось не совсем. Текущий вариант при помощи дополнительного скрипта сразу же обнуляет инпут при вводе точки, как отдельно, так и в составе дробного числа, но при вводе запятой после цифры очищает инпут только тогда, когда дробное число полностью дописано, а не сразу после ввода запятой.

Кроме того, в консоль выдает такое сообщение:
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');

Dilettante_Pro 28.08.2018 14:28

запретить ввод в инпут точек, запятых, буквы ё и +.
<input type="text" id="input">
<script>
document.getElementById('input').oninput = function() {
   this.value = this.value.replace(/[+\.\,ёЁ]/,'');
}
</script>

рони 28.08.2018 14:46

Dilettante_Pro,
там наверно телепат нужен, чтоб предсказывал стирать точку или нет.

DVV 28.08.2018 14:49

Тут все отлично работает, а когда к себе ставлю, то при вводе дробного числа через точку все ок, но через запятую, например, 5,6, то запятая пропадает, а остается 56.

DVV 28.08.2018 14:51

Лучше вообще запретить ввод и точки и запятой

Aetae 28.08.2018 14:52

Почему запрет на Ё? Я люблю букву ё и ненавижу когда не могу оную ввести.
Если уж убирать ё то заменой на е, иначе будет куча случаев с незамеченным пропуском на её месте.

А запятая пропадает потому, что вы попросили чтобы она пропадала. Исключений оговорен не было.

Dilettante_Pro 28.08.2018 14:55

Цитата:

Сообщение от рони
там наверно телепат нужен

По мере поступления новых пояснений я уже вообще перестал что-то понимать.

DVV 28.08.2018 14:57

Как? Я ведь написал "запретить ввод в инпут точек, запятых, буквы ё и +"

DVV 28.08.2018 15:01

Написал вот так 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+)?

Dilettante_Pro 28.08.2018 15:01

Цитата:

Сообщение от Aetae
Я люблю букву ё

Существуют и Ё-ненавистники.
Ё(кириллица)


Часовой пояс GMT +3, время: 00:25.