2012-04-04 32 views
5

tôi đang cố gắng để có được ít nhất ba từ tách ra bởi hai commas.I cho đến nay được quản lý để phù hợp với hai từ với một dấu phẩy vớiRegex để phù hợp với ba chữ cách nhau bởi dấu phẩy hai

/([A-z]|[0-9])(,{1})([A-z]|[0-9])/ 

nhưng làm thế nào tôi có thể thêm một dấu phẩy và một từ để this.I đã cố gắng lặp đi lặp lại giống nhau nhưng không hoạt động.

+4

gì ngôn ngữ này trong biểu thức chính quy này? –

+3

Bạn có thể muốn '[a-zA-Z]' và không phải '[A-z]' – Yuval

+0

Xuất hiện là javascript với tôi, nhưng tôi có thể sai. – Neil

Trả lời

5

/^(?:\w+,){2,}(?:\w+)$/

Điều này sẽ giúp bạn có được một dấu phẩy tách ra danh sách ít nhất 3 từ ([a-zA-Z0-9 _] +).

/^\s*(?:\w+\s*,\s*){2,}(?:\w+\s*)$/

Đây là một phiên bản sử dụng hơi nhiều hơn những người đầu tiên, cho phép khoảng trống trong giữa các từ.

+0

nhờ sự trợ giúp. Nhưng không cho phép khoảng trắng giữa các từ tương ứng với bạn đã đề cập đến –

+0

[Tôi đã tự thử nó.] (http://www.regular-expressions.info/javascriptexample.html) Bạn đã thử ví dụ nào? – Neil

+0

cảm ơn vì điều này.Tôi hài lòng với những gì u đã cho tôi nhưng Có vẻ như những từ đầu tiên và thứ ba mất không gian giữa nhưng thứ hai doesnot.Foe ví dụ, (rất tốt, không xấu, rất xấu xí) sẽ không vượt qua xác nhận nhưng (rất tốt, xấu, rất xấu) đi qua xác nhận –

1

Nếu đó là số PERL derived regex, như hầu hết các triển khai tôi đã gặp, hãy kiểm tra tốt bất kỳ thứ gì có ít nhất hai dấu phẩy trong đó, cung cấp dấu phẩy có dấu phẩy giữa chúng. Cấu trúc (?:) cho phép nhóm mà không cần chụp. Cấu trúc {2,} chỉ định 2 hoặc nhiều kết quả trùng khớp của nhóm trước đó. Trong javascript, bạn có thể kiểm tra nó:

/[^,]+(?:,[^,]+){2,}/.test("hello,world,whats,up,next"); // returns true 

/[^,]+(?:,[^,]+){2,}/.test("hello,world"); // returns false 
+0

Bạn có thể đi mà không có '?:' Trong cấu trúc '(? :)' nếu nó không có nguồn gốc PERL; nhưng sau đó bạn bị bắt, mà tôi không biết nếu bạn muốn. – Yuval

0

Vài gợi ý chung từ góc độ hiệu suất:

  1. Không sử dụng [] | [] khoản - bạn chỉ có thể đặt vài lớp nhân vật bên trong một [] , ví dụ [A-Za-z0-9]
  2. Đừng lạm dụng() - thường mỗi người trong số họ lưu trữ đối số được ghi lại yêu cầu chi phí bổ sung. Nếu bạn chỉ cần vào nhóm vài miếng lại với nhau tìm kiếm điều hành nhóm mà không cửa hàng phù hợp (nó có thể là một cái gì đó tương tự (? ...))
+0

Vui lòng [sửa bài đăng của bạn] (http://meta.stackoverflow.com/editing-help) gần như không thể đọc được của nó. – stema

0

Hãy thử điều này một:

([a-zA-Z0-9]+)(,[a-zA-Z0-9]+){2,} 
-1

này sẽ giải quyết vấn đề của bạn, thử

([a-zA-Z0-9], [a-zA-Z0-9], ([a-zA-Z0-9]))

+0

Điều này sẽ chỉ xử lý các ký tự đơn, ví dụ: a, b, c hoặc 1,2,3. –

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