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:
[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 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
[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.
Z
và a
, 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.
[65-90]
sẽ khớp 5
- 9
(bao gồm cả 6
) và 0
!
{2}
không có dấu phẩy cũng sẽ hoạt động, phải không?