Để thay thế tất cả dấu chấm (.) trong chuỗi, bạn cần **escape** ký tự chấm trong regex (vì . trong regex khớp với bất kỳ ký tự nào) và dùng cờ g (global) với phương thức replace().
Ví dụ minh họa
Mã sau thay thế tất cả dấu chấm bằng khoảng trắng:
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
var str = 'Demo.Text.with.dots';
document.write("Chuỗi gốc: " + str + "<br>");
// Escape dấu chấm bằng \. và dùng flag g (global)
var res = str.replace(/\./g, ' ');
document.write("Chuỗi sau replace: " + res);
</script>
</body>
</html>
Giải thích regex /\./g
/ ... /: Để bọc regex literal.\.: Escape dấu chấm — khớp chính xác ký tự.(không phải "bất kỳ ký tự").g: Global flag — tìm **tất cả** lần xuất hiện, không dừng ở lần đầu.
Các cách khác
| Phương pháp | Code | Lưu ý |
|---|---|---|
| replaceAll (ES2021) | str.replaceAll('.', ' ') | Không cần regex, tự escape, hỗ trợ tốt trình duyệt hiện đại |
| Regex + replace | str.replace(/\./g, ' ') | Tiêu chuẩn cũ, hỗ trợ mọi nơi |
| Split + Join | str.split('.').join(' ') | Đơn giản, không regex, hiệu năng tốt cho chuỗi ngắn |
| Regex constructor | str.replace(new RegExp('\\.', 'g'), ' ') | Khi pattern từ biến (dynamic) |
Lưu ý
replace()**không thay đổi chuỗi gốc** (string immutable), trả về chuỗi mới.- Nếu dùng
str.replace('.', ' ')(không regex, không flag g) → chỉ thay **lần đầu tiên**. - Để thay thế nhiều ký tự đặc biệt regex:
str.replace(/[.+*?^${}()|[\]\\]/g, '\\$&')(escape toàn bộ metacharacters).