RegEx để tìm hai hoặc nhiều ký tự liên tiếp


98

Tôi cần xác định xem một chuỗi có chứa hai hoặc nhiều ký tự alpha liên tiếp hay không. Hai hoặc nhiều [a-zA-Z]cạnh nhau. Thí dụ:

"ab" -> valid
"a1" -> invalid
"a b" -> invalid
"a"-> invalid
"a ab" -> valid
"11" -> invalid

Câu trả lời:


204

Cái này cần phải dùng mẹo:

[a-zA-Z]{2,}

Có thể {2}không có dấu phẩy cũng sẽ hoạt động, phải không?
Alexander Mills

17
Alexander, chỉ cần để xóa vài điều: {2} có nghĩa là rằng chiều dài phải là 2. {2,} có nghĩa là rằng chiều dài của biểu thức có thể => 2
Shmarkus

1

Personnaly (với tư cách là một nooby) tôi đã sử dụng:

[0-9][0-9]+.

Nhưng một trong những từ Simon, là cách tốt hơn! = D


0

[a-zA-Z] {2,} không hoạt động đối với hai hoặc nhiều ký tự liên tiếp giống nhau. Để làm điều đó, bạn nên chụp bất kỳ nhân vật nào và sau đó lặp lại việc chụp như sau:

(.) \ 1

Dấu ngoặc đơn ghi lại. đại diện cho bất kỳ ký tự nào và \ 1 là kết quả của việc thu thập - về cơ bản là tìm kiếm sự lặp lại liên tiếp của ký tự đó. Nếu bạn muốn biết cụ thể những ký tự bạn muốn tìm là giống hệt nhau liên tiếp, chỉ cần thay thế "ký tự bất kỳ" bằng một lớp ký tự ...

([a-zA-Z]) \ 1

Tìm một ký tự viết thường hoặc viết hoa lặp lại liên tiếp. Đối sánh với "abbc123" chứ không phải "abc1223". Để cho phép một khoảng trắng giữa chúng (tức là ab), sau đó bao gồm một khoảng trắng tùy chọn trong regex giữa ký tự được chụp và lặp lại ...

([az] AZ]) \ s? \ 1


Tôi khá chắc rằng bạn đã hiểu sai câu hỏi vì nó là về hai chữ cái. Regex của bạn dành cho một trường hợp khác: hai chữ cái giống nhau!
csabinho

-4

Tôi khá chắc rằng bạn chỉ có thể sử dụng [Az] thay vì [a-zA-Z] để nhận các ký tự alpha chữ hoa và nhỏ http://www.w3schools.com/jsref/jsref_obj_regexp.asp


22
-1: Đây là một ví dụ tuyệt vời khác về lý do tại sao bạn không bao giờ nên sử dụng w3schools để tham khảo hoặc giáo dục. [A-z]phù hợp với nhiều hơn các chữ cái. Cụ thể, nó cũng khớp với dấu ngoặc vuông, dấu gạch chéo ngược, dấu mũ, dấu gạch dưới và dấu gạch ngược.
Tim Pietzcker

Thật vậy, những gì @TimPietzcker nói là chính xác; các ký tự mà anh ấy đề cập đến ở giữa Za, do đó sẽ được đưa vào (một cách sai lầm) trong một mẫu như vậy. Tôi thứ hai khuyến nghị: Không sử dụng w3schools! Nó có rất nhiều thông tin xấu tinh vi như thế này.
Andrew Barber,

5
Ouch lần đầu tiên trên Stack, nó nhức nhối hơn tôi nghĩ. Vì vậy, bằng cách thêm Az, nó khớp với mọi thứ từ [AZ một loạt những thứ tôi không muốn và az] tất cả các mã ký tự giữa viết hoa và không viết hoa? danshort.com/ASCIImap
Kevin,

vì vậy tôi có thể nói một cái gì đó như [! - +]? Ngoài ra, có cách nào để truy cập mã charcode bên trong regex giống như [65-90] giống như [AZ] không?
Kevin,

@Kevin [65-90]sẽ khớp 5- 9(bao gồm cả 6) và 0!
csabinho
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.