Câu hỏi regex phân chia Javascript


116

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

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

Regex chính xác cho điều này là gì và tất cả sự giúp đỡ sẽ là tuyệt vời.

Câu trả lời:


174

Bạn cần đặt các ký tự bạn muốn tách ra trong một lớp ký tự , thông báo cho 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 ký tự như là một công cụ xác định phạm vi (nghĩa [a-z]là giống như [abcdefghijklmnopqrstuvwxyz]), nhưng nếu bạn đặt nó là điều cuối cùng trong lớp thì nó có nghĩa là dấu gạch ngang và không cần phải thoát.

Để giải thích lý do tại sao mẫu của bạn không hoạt động, hãy /-./nói với công cụ biểu thức chính quy khớp với ký tự dấu gạch ngang theo sau bởi bất kỳ ký tự nào ( dấu chấm là ký tự đại diện trong biểu thức chính quy). Với "02-25-2010", nó sẽ phân tách mỗi lần gặp "-2", bởi vì dấu gạch ngang khớp và dấu chấm khớ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 nào trong lớp nhân vật - thay vì hoạt động như một ký tự đại diện (điều này sẽ không có ý nghĩa gì), nó hoạt động như một nghĩa đen.
Bobby Jack

11

hoặc chỉ (bất cứ điều gì trừ số):

date.split(/\D/);

6

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

date.split(/-/);

hoặc là

date.split('-');

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

5

Sau đó chia nó thành bất cứ thứ gì trừ số:

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

3

Nói chuỗi của bạn là:

let str = `word1
word2;word3,word4,word5;word7
word8,word9;word10`;

Bạn muốn chia chuỗi theo các dấu phân cách sau:

  • Đại tràng
  • Dấu chấm phẩy
  • Dòng mới

Bạn có thể chia chuỗi như thế này:

let rawElements = str.split(new RegExp('[,;\n]', 'g'));

Cuối cùng, bạn có thể cần phải cắt các phần tử trong mảng:

let elements = rawElements.map(element => element.trim());


-1

thay vào đó hãy thử

ngày.split (/ \ W + /)


Bạn có thể giải thích tại sao đây là một câu trả lời tốt hơn so với 5+ đã được đăng trước đó không? Và nó thực sự hoạt động như thế nào?
mjuarez

Điều này thực sự làm việc tốt nhất trong số tất cả các câu trả lời cho tôi.
reectrix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.