Bạn cần đặt các ký tự mà bạn muốn chia nhỏ trong một character class, cho biết công cụ biểu thức chính quy "bất kỳ ký tự nào trong số này là khớp". Đối với mục đích của bạn, điều này sẽ trông giống như:
date.split(/[.,\/ -]/)
Mặc dù dấu gạch ngang có ý nghĩa đặc biệt trong các lớp nhân vật như một specifier phạm vi (ví dụ: [a-z]
nghĩa giống như [abcdefghijklmnopqrstuvwxyz]
), nếu bạn đặt nó như là điều cuối cùng trong lớp nó được lấy để có nghĩa là một dấu gạch ngang chữ và không cần phải được thoát.
Để giải thích lý do mẫu của bạn không hoạt động, /-./
yêu cầu công cụ biểu thức chính quy khớp với ký tự gạch ngang theo sau bởi bất kỳ ký tự nào (dots là ký tự đại diện trong cụm từ thông dụng). Với "02-25-2010", nó sẽ chia mỗi lần "-2" gặp phải, bởi vì các dấu gạch ngang phù hợp và dấu chấm phù hợp với "2".
Nguồn
2010-08-24 19:02:10
Bạn cũng có thể đề cập rằng một dấu chấm * không * có bất kỳ ý nghĩa đặc biệt bên trong một lớp nhân vật - thay vì đóng vai trò như một ký tự đại diện (không có ý nghĩa gì), nó hoạt động như một chữ. –