Chuyển đến nội dung chính
Mô-đun 7 · Bài học 4 trong tổng số 428/32 trong khóa học~10 min
Bài học theo mô-đun (4/4)

Tách bằng biểu thức chính quy

String.prototype.split(separator) không chỉ chấp nhận một chuỗi cố định mà còn chấp nhận cũng là regex làm dấu phân cách. Điều này làm cho nó trở thành một công cụ mạnh mẽ để token hóa văn bản có cấu trúc.

JS
'uno, due,tre  quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]

Regex /[,\s]+/ khớp với "một hoặc nhiều dấu phẩy hoặc khoảng trắng": tách phân chia trên bất kỳ dấu phân cách ghép nào.

Trường hợp điển hình

  • CSV cho phép: text.split(/\s*,\s*/) để xử lý khoảng trắng xung quanh dấu phẩy.
  • Mã thông báo ngây thơ: text.split(/\s+/) để trích xuất từ.
  • Giữ dấu phân cách: nếu biểu thức chính quy chứa các nhóm thu thập, thì nội dung của các nhóm được bao gồm trong mảng kết quả.
JS
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]

Nếu không có nhóm () dấu chấm phẩy sẽ biến mất. Với (;) bạn giữ nó trong kết quả.

Bảo quản dấu phân cách trong hoạt động phân chia

Nếu bạn đặt dấu phân tách bên trong dấu ngoặc đơn bắt giữ, thì đầu ra của String.prototype.split sẽ bao gồm chính dấu phân cách đó làm thành phần trong mảng cuối cùng, thay vì loại bỏ chúng.

Hãy thử nó

tập thể dục#regex.m7.l4.e1
Nỗ lực: 0Đang tải…

Tìm mọi dấu phân cách CSV cho phép: dấu phẩy có khoảng trắng tùy chọn xung quanh nó. Bằng cách này, bạn có thể sử dụng nó theo cách chia nhỏ để mã hóa danh sách.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng \\s* trước và sau dấu phẩy để loại bỏ mọi khoảng trắng tùy chọn.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#regex.m7.l4.e2
Nỗ lực: 0Đang tải…

Tìm mọi dấu phân cách 'dấu cách hoặc dấu chấm phẩy' (một hoặc nhiều). Cách phân chia này sẽ mã hóa văn bản thành các từ.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Kết hợp \\s và ; trong một lớp [\\s;] với bộ định lượng +.

Giải pháp khả dụng sau 3 lần thử

Thử thách bổ sung

tập thể dục#regex.m7.l4.e3
Nỗ lực: 0Đang tải…

Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Enclose the math operators character class in capture parentheses to preserve them in the split array.

Giải pháp khả dụng sau 3 lần thử