Я пытаюсь создать регулярное выражение для десятичного числа, и в то же время знак «-» или «+» станет необязательным в начале.Регулярное выражение - знак +/- и десятичный знак
Есть много информации об этом, так как я закончил с этим:
/^[+-]?\d+(\.\d+)?$/
Итак, я проверил это в консоли с помощью функции test()
и он прекрасно работает.
Мой вопрос о том, где сделать эту проверку:
, если проверка на
keypress
случае я в состоянии использоватьpreventDefault()
для того, чтобы «потреблять» неправильные символы, но я извлечения текста как это и не имеет доступа к последнему введенному символу -$(event.target).val()
, если проверка на
keyup
случае у меня есть доступ ко всему тексту, но я не в состоянии удалить неправильный символ, потому что я не знаю, какое это и где он был вставлен (с помощью мыши i t может быть помещен в начало или в середину действительной строки)
Мне нужно проверить комбинацию символов, а не проверять только символы. Например:
- //invalid
- 1 //valid
1. //invalid
1.2 //valid
Таким образом, я предполагаю, что я должен чек, когда весь жала вводится, но затем, как два удалите неправильные символы? Удаление всей строки, когда она недействительна, выглядит неправильно.
Это регулярное выражение слишком многословен, '/^[+-]?\d+(\.\d+)?$/ 'короче и эквивалентнее. – Jon
@ Джон, спасибо, ты прав. Мне просто нужно понять, что проблемы, с которыми я столкнулся, связаны с проверкой, а не с самим регулярным выражением, поэтому я многое изменил. Я исправлю это. – gotqn
Я бы сказал, найти способ запросить пользователя «недопустимый номер» после того, как они попробуют ввести его и заставить их повторно ввести номер, или что-то на стороне окна ввода с «действительным» или «недействительным» показом (проверка будет сделана после каждого нажатия клавиши и изменения от действительного до недействительного и наоборот, поскольку введены больше символов). Я не знаю достаточно JS, чтобы помочь там, хотя! – Jerry