Regex tìm số trong văn bản

Dùng /-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g để tìm mọi kết quả khớp trong một đoạn văn bản. Mỗi ví dụ bên dưới đều đã được kiểm thử với pattern này, và bạn có thể mở nó trong Regex Tester với dữ liệu mẫu đã được nạp sẵn.

Cập nhật

/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g
Mở trong Regex Tester

Văn bản mẫu

Order 3 items at $4.50 each, save -2.5% on 1,200 units — 12345 in stock.

5 kết quả khớp

3 4.50 -2.5 1,200 12345

Pattern hoạt động như thế nào

PhầnÝ nghĩa
-?Dấu trừ tùy chọn
\d{1,3}(?:,\d{3})+Số có dấu phân cách hàng nghìn, như 1,200
|\d+Hoặc các chữ số thông thường
(?:\.\d+)?Phần thập phân tùy chọn

Ví dụ code

JavaScript

const matches = text.match(/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g) ?? [];

Python

import re

matches = re.findall(r'-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?', text)

PHP

preg_match_all('/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/', $text, $m);
$matches = $m[0];

Ghi chú và giới hạn

Hãy bỏ dấu phẩy trước khi chuyển kết quả khớp thành số. Với số viết dạng 1.200,50 (kiểu Đức và nhiều định dạng vùng khác), hãy đổi chỗ dấu phẩy và dấu chấm trong pattern.

Câu hỏi thường gặp

Regex tìm số trong văn bản là gì?
/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g — dùng để tìm mọi kết quả khớp trong văn bản. Xem bảng ở trên để biết mỗi phần làm gì.
Có chạy được trong Python và PHP không?
Có — các ví dụ code ở trên dùng cùng pattern này, với re trong Python và các hàm preg trong PHP.
Làm sao để kiểm thử regex này?
Nhấn “Mở trong Regex Tester” — pattern, cờ và văn bản mẫu sẽ tự động được nạp, và kết quả khớp sẽ được tô sáng khi bạn chỉnh sửa.