2012-03-16 40 views
6

Tôi đang cố gắng tách chuỗi sau (hoặc tương tự) "08-27-2015 07:25:00 SA". Hiện nay tôi sử dụngTách số và chữ cái trong chuỗi có chứa cả hai

var parts = date.split(/[^0-9a-zA-Z]+/g); 

mà kết quả trong

["02", "27", "2012", "03", "25", "00AM"] 

Vấn đề là với phần 00AM. Tôi muốn nó được tách ra quá. Vì vậy, kết quả hoàn hảo sẽ là:

["02", "27", "2012", "03", "25", "00", "AM"] 
+1

Định dạng của dữ liệu nhập có nhất quán với ngày ở định dạng đó không? – gahooa

+0

Bạn có muốn chia tách hoặc trong các phần thực tế của chuỗi không? –

+0

Tôi đang sử dụng nó thực sự để phân tích ngày theo cách đó. Sergio, không chắc ý anh là gì. Tôi muốn nhận được các phần chính xác và tôi cố gắng bằng cách tách chuỗi. –

Trả lời

20

Nếu bạn đang tìm kiếm chuỗi ký tự hoặc số, nhưng không phải là một chuỗi cả hỗn hợp, bạn có thể làm điều này ...

"08-27-2015 07:25:00AM".match(/[a-zA-Z]+|[0-9]+/g) 

kết quả là ...

["08", "27", "2015", "07", "25", "00", "AM"] 

Ở hai bên của |, chúng tôi có một chuỗi gồm một hoặc nhiều chữ cái và một chuỗi o ne hoặc nhiều số. Vì vậy, khi nó đi qua một lá thư, nó sẽ thu thập tất cả các chữ cái liền kề cho đến khi nó đạt đến một chữ cái, tại thời điểm đó nó tập hợp tất cả các số tiếp giáp, và như vậy.

Bất kỳ ký tự nào khác không phù hợp để nó không trở thành một phần của kết quả.

+1

Đó chỉ là hoàn hảo, thậm chí nó chia tách '02June2015'. Cảm ơn! –

1
var date = "08-27-2015 07:25:00AM"; 
var parts = date.replace(/([AP]M)$/i, " $1").split(/[^0-9a-z]+/ig); 

var date = "05June2012"; 
var parts = date.replace(/([a-z]+)/i, " $1 ").split(/[^0-9a-z]+/ig); 
+0

Trong khi bạn có thể viết một bộ chia chung, bạn sẽ cần phải biết những gì mong đợi trong mảng kết quả. Vì vậy, tôi không chắc liệu nó có mục đích hữu ích nào khi phân tích có liên quan tức là nếu bạn không biết định dạng đầu vào, mảng kết quả sẽ có kích thước khác nhau và sẽ có loại phần tử khác nhau ở các vị trí khác nhau. Làm thế nào bạn biết phải làm gì với điều đó? –

0

Nếu ngày luôn ở định dạng mà bạn có thể sử dụng:

var parts = date.match(/([0-9]{2})-([0-9]{2})-([0-9]{4})\s([0-9]{2}):([0-9]{2}):([0-9]{2})(AM|PM)/).splice(1)

0

Tôi sẽ sử dụng một thư viện ngày để phân tích các lĩnh vực mà bạn muốn. Bằng cách đó bạn có thể xử lý nhiều định dạng và không phải lo lắng về việc phân tích cú pháp với các biểu thức chính quy. Trong khi DateJS hơi cũ, nó hoạt động tốt để phân tích cú pháp.

Các vấn đề liên quan