Регулярное выражение позволяет вводить цифры и одну точку
Каким будет регулярное выражение для ввода цифр и точки? Относительно этого \D
допускаются только цифры, но он не допускает точки, мне нужно, чтобы цифры и одна точка, это значение как float. Мне нужно быть действительным при выполнении keyup
в jQuery, но все, что мне нужно, это регулярное выражение, которое разрешает только то, что мне нужно.
Это будет встроено в функцию JavaScript replace
для удаления нецифровых символов и других символов (кроме точки).
Приветствия.
Ответы
Ответ 1
Если вы хотите разрешить 1
и 1.2
:
(?<=^| )\d+(\.\d+)?(?=$| )
Если вы хотите разрешить 1
, 1.2
и .1
:
(?<=^| )\d+(\.\d+)?(?=$| )|(?<=^| )\.\d+(?=$| )
Если вы хотите разрешить только 1.2
(только плавает):
(?<=^| )\d+\.\d+(?=$| )
\d
позволяет цифры (в то время как \d
позволяет что угодно, кроме цифр).
(?<=^| )
проверяет, что этому номеру предшествует либо пробел, либо начало строки. (?=$| )
гарантирует, что за строкой следует пробел или конец строки. Это гарантирует, что число не является частью другого числа или в середине слов или чего-то еще.
Изменить: добавлено больше опций, улучшено регулярное выражение, добавив lookahead- и backs для обеспечения того, чтобы номера были автономными (т.е. не находились в середине слов или других номеров.
Ответ 2
\d*\.\d*
Объяснение:
\ d * - любое количество цифр
\. - точка
\ d * - больше цифр.
Это будет соответствовать 123.456
, .123
, 123.
, но не 123
Если вы хотите, чтобы точка была необязательной, на большинстве языков (не знаю о jquery) вы можете использовать
\d*\.?\d*
Ответ 3
Моя попытка - это комбинированное решение.
string = string.replace(',', '.').replace(/[^\d\.]/g, "").replace(/\./, "x").replace(/\./g, "").replace(/x/, ".");
string = Math.round( parseFloat(string) * 100) / 100;
Решение первой строки отсюда: регулярное выражение, заменяющее несколько периодов плавающим числом. Он заменяет запятую "," точкой "."; Заменяет первую запятую на x; Удаляет все точки и заменяет x на точку.
Вторая строка очищает цифры после точки.
Ответ 4
Попробуйте это
boxValue = boxValue.replace(/[^0-9\.]/g,"");
Это регулярное выражение будет содержать только цифры и точки в текстовом поле.
Ответ 5
Попробуйте следующее выражение
/^\d{0,2}(\.\d{1,2})?$/.test()