Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2018, 13:26
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

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

Кроме того, в консоль выдает такое сообщение:
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');
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2018, 14:28
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

Последний раз редактировалось Dilettante_Pro, 28.08.2018 в 14:36.
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2018, 14:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Dilettante_Pro,
там наверно телепат нужен, чтоб предсказывал стирать точку или нет.
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2018, 14:49
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Тут все отлично работает, а когда к себе ставлю, то при вводе дробного числа через точку все ок, но через запятую, например, 5,6, то запятая пропадает, а остается 56.
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2018, 14:51
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Лучше вообще запретить ввод и точки и запятой
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2018, 14:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

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

А запятая пропадает потому, что вы попросили чтобы она пропадала. Исключений оговорен не было.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 28.08.2018, 14:55
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от рони
там наверно телепат нужен
По мере поступления новых пояснений я уже вообще перестал что-то понимать.
Ответить с цитированием
  #8 (permalink)  
Старый 28.08.2018, 14:57
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Как? Я ведь написал "запретить ввод в инпут точек, запятых, буквы ё и +"
Ответить с цитированием
  #9 (permalink)  
Старый 28.08.2018, 15:01
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Написал вот так 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+)?
Ответить с цитированием
  #10 (permalink)  
Старый 28.08.2018, 15:01
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от Aetae
Я люблю букву ё
Существуют и Ё-ненавистники.
Ё(кириллица)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение tata4ka Общие вопросы Javascript 4 15.11.2014 00:56
Как преобразовать выражение типа "1/2" oxpannik Общие вопросы Javascript 2 11.09.2013 11:15
Регулярное выражение и метод test tsigel Общие вопросы Javascript 3 30.08.2013 13:47
ActionScript - как изменить значение soundbuftime? Маэстро Flash 6 14.01.2012 15:08
регулярное выражение leny Общие вопросы Javascript 1 24.09.2011 17:30