Regex замінить усе, крім цифр і десяткових знаків


113

У мене є текстове поле, яке повинно залишатися лише текстовим чи десятковим. Ось код, який я зараз використовую для заміни всього, крім цифр і десяткової крапки. Проблема полягає в тому, що я не можу розібратися з регулярним виразом, який ідентифікує все інше

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

\ D працює добре, але я спробував (?!.), (?!\.), [^.], [^\.]і так далі ...

Будь-які пропозиції щодо регулярного виразу, що позитивно ідентифікує будь-що, окрім числа чи десяткової?

Дякую за допомогу


в разі , якщо ви хочете , щоб перевірити реальні цифри , а не числових цифр: stackoverflow.com/questions/42328875 / ...
cregox

Відповіді:


239

Використовуй це:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");

1
@Hugo це нічого не дозволяє, ви просто не повинні передавати рядок, який потенційно може містити більше десяткових знаків і попередньо обробити його. Це як би казати, що рядок дозволяє кожному символу ...
jave.web

3
Потім запустіть повернене значення через parseFloat. Це видалить додаткові знаки після коми. наприкладparseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Саймон

1
Це чудово для перетворення вже відформатованих чисел, таких як гроші, у обчислюваний плавець.
lu1s

8

Видалити лише десяткову частину можна так:

number.replace(/(\.\d+)+/,'');

Це перетворило б 13,6667px в 13px (одиниці px не залишилися недоторканими).


7

Спробуйте це:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");


2
найкраща відповідь. Вилучає 0,000 10,000000 .22 2.234, але зберігає 1, 10, 10.1, 10.22
Роберт Бейкер

Цей вираз виглядає складним, ви могли б пояснити, як він працює чи що саме він видалить?
Міндеров

Це не працює з кирилицею, наприклад "5,12 руб."
Міндеров

4
"11111" .замінити (/ ^ \ d + (\. \ D {0,2})? $ /, "") - результат порожній рядок
yAnTar

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.