Regex để thay thế mọi thứ ngoại trừ số và dấu thập phân


113

Tôi có một trường văn bản chỉ cần giữ lại văn bản hoặc số thập phân. Đây là mã mà tôi hiện đang sử dụng để thay thế mọi thứ ngoại trừ số và dấu thập phân. Vấn đề là, tôi không thể tìm ra một regex sẽ xác định mọi thứ khác

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

\ D hoạt động tốt, nhưng tôi đã thử (?!.), (?!\.), [^.], [^\.], v.v.

Bất kỳ đề xuất nào cho một biểu thức chính quy xác định dương với bất kỳ thứ gì ngoại trừ một số hoặc một số thập phân?

Cảm ơn đã giúp đỡ


trong trường hợp bạn đang tìm kiếm để kiểm tra các con số thực tế chứ không phải là ký tự số: stackoverflow.com/questions/42328875/...
cregox

Câu trả lời:


239

Dùng cái này:

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

1
@Hugo điều này không cho phép bất cứ điều gì, bạn chỉ không nên chuyển một chuỗi có khả năng chứa nhiều dấu thập phân hơn và xử lý trước nó trước. Nó giống như nói chuỗi cho phép mỗi nhân vật ...
jave.web

3
Sau đó chạy giá trị trả về thông qua parseFloat. Điều đó sẽ loại bỏ các dấu thập phân bổ sung. ví dụparseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Simon

1
Điều này thật tuyệt khi chuyển đổi các số đã được định dạng sẵn như tiền sang một số thực có thể tính toán được.
lu1s

8

Chỉ loại bỏ phần thập phân có thể được thực hiện như sau:

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

Điều này sẽ chuyển đổi 13,6667px thành 13px (để nguyên đơn vị px).


7

Thử cái này:

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


2
câu trả lời tốt nhất. Xóa 0.000 10.000000 .22 2.234, nhưng giữ lại 1, 10, 10.1, 10.22
Robert Baker

Biểu thức này có vẻ phức tạp, bạn có thể giải thích cách hoạt động của nó hoặc chính xác nó sẽ loại bỏ những gì?
Minderov

Điều này không hoạt động với đầu vào cyrillic như "5.12 руб".
Minderov

4
"11111" .replace (/ ^ \ d + (\. \ D {0,2})? $ /, "") - kết quả là chuỗi trống
yAnTar

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.