2010-08-24 30 views
71

xin chào Tôi đang cố gắng những gì tôi nghĩ sẽ là một regex khá dễ dàng trong Javascript nhưng là cho tôi rất nhiều rắc rối. Tôi muốn có khả năng chia nhỏ ngày qua phân tách javascript bằng dấu '-', '.', '/' Và ''.Javascript chia regex câu hỏi

var date = "02-25-2010"; 
var myregexp2 = new RegExp("-."); 
dateArray = date.split(myregexp2); 

Regex chính xác cho việc này là gì và mọi trợ giúp sẽ tuyệt vời.

Trả lời

114

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".

+3

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ữ. –

4

bạn chỉ có thể sử dụng

date.split(/-/); 

hoặc

date.split('-'); 
+1

Đặt dấu ngắt dòng trước mã của bạn và 4 dấu cách sẽ định dạng đúng. – Brandon

4

Sau đó chia nó trên bất cứ điều gì nhưng con số:

date.split(/[^0-9]/); 
6

hoặc chỉ (bất cứ điều gì nhưng con số):

date.split(/\D/); 
0

hoặc chỉ sử dụng cho chuỗi ngày 2015/05/20 hoặc 2015.05.20

date.split(/\.|-/);