Tôi muốn kiểm tra xem đầu vào của người dùng ở phía máy chủ hay chưa. Nếu người dùng nhập vào một số 111111 hoặc 22222 trong đó có các con số tương tự, và cũng nếu đầu vào là theo thứ tự như 12345 hoặc 456789.RegEx để kiểm tra xem các số trong một số có giống nhau hay theo thứ tự
Trả lời
Để phù hợp với cùng một chữ số liên tiếp:
^([0-9])\1*$
Lưu ý rằng bạn có để thoát khỏi dấu gạch chéo ngược khi bạn đặt nó trong một chuỗi java chữ, ví dụ "^([0-9])\\1*$"
.
Đối với thứ hai, bạn phải tạo danh sách các chữ số liên tiếp một cách rõ ràng bằng cách sử dụng toán tử |
. Các regex sẽ thực sự dài và khó chịu với nhiều như 10-lồng nhau parantheses. Người ta phải tạo ra regex này bằng cách sử dụng một chương trình. Nói cách khác, đây là một vấn đề sai để giải quyết bằng cách sử dụng regex. Nó sẽ đơn giản hơn nhiều để viết một vòng lặp và kiểm tra điều này.
mô hình này sẽ phù hợp nếu người dùng nhập các chữ số giống nhau:
^(\d)\1*$
\1
phù hợp với nhóm chụp đầu tiên, vì vậy mô hình phù hợp cho dù đó là chữ số đầu tiên được lặp lại cho toàn bộ chuỗi.
Vấn đề thứ hai (chữ số liên tiếp) có phần khó khăn hơn.
^(?:^(?:^(?:^(?:^0?1)?2)?3)4?)?5(?:$|6(?:$|7(?:$|8(?:$|90?))))$|
^(0?1)?2(?:$|3(?:$|4))|^(6?7)?8(?:$|90?)$
là một triển khai, giả sử ba chữ số trở lên. Nhưng vì số lượng kết hợp nhỏ, liệt kê (4 chữ số) cũng có thể:
^(?:0?123(45?)?|1?23456?|2?34567?|3?45678?|4?56789?|(5?6)?7890?|
(0?1)?2345678?(90$)?|1?23456789?|2?345678(90?)?)$
Tất cả điều này nói, cụm từ thông dụng không phải lúc nào cũng hoạt động tốt cho loại sự cố này. Một phương pháp Java để kiểm tra trình tự này có thể sạch hơn.
Regex thứ hai không khớp với chuỗi như "123", "345", v.v. Chỉnh sửa: Ok, bây giờ tôi thấy rằng bạn đã giả định "6 chữ số". –
cảm ơn Susam, tôi thấy rằng 6 chữ số không phải là yêu cầu và đã chỉnh sửa bài đăng để làm cho bài viết trở nên chung chung hơn. – drf
giải quyết nếu số bắt đầu bằng 0 hoặc 1 tôi nghĩ. Đối với vòng lặp là hữu ích nhiều. Thanx btw. – yyy
thời gian trong perl này, để giải thích trường hợp thứ hai dễ dàng hơn:
perl -nlE 'say "BAD number" if ($_ =~ /^(\d)\1*$/ or "123456789" =~ /$_/)'
Giải thích:
- trường hợp 1: đầu vào ∈
/(\d)\1*/
ngôn ngữ: đã trình bày ($_ =~ /^(\d)\1*$/
) - trường hợp 2: chuỗi "123456789" khớp với đầu vào (
"123456789" =~ /$_/
)
- 1. Để kiểm tra xem hai tệp hình ảnh có giống nhau không. Kiểm tra hoặc băm?
- 2. làm cách nào để kiểm tra xem 3 ký tự có theo thứ tự alpha liên tiếp hay không
- 3. Kiểm tra xem 2 chuỗi có chứa các ký tự giống nhau không?
- 4. Kiểm tra xem một số có dương hay âm bằng cách sử dụng toán tử bitwise
- 5. Kiểm tra xem số phao có chứa số thập phân hay không
- 6. Kiểm tra xem danh sách các số nguyên có tăng thêm một số
- 7. kiểm tra hai trường hợp đối tượng để xem chúng có giống nhau không
- 8. Kiểm tra xem một số nguyên có phải là số nguyên của một số khác
- 9. Kiểm tra xem mỗi mục trong một mảng có giống hệt nhau trong javascript
- 10. Kiểm tra xem số phức có NaN
- 11. Regex để kiểm tra xem chuỗi có kết thúc bằng số
- 12. Làm cách nào để kiểm tra xem một số dương hay âm trong C#?
- 13. Kiểm tra xem một số có bằng một số khác trong bash
- 14. Giải pháp thanh lịch để kiểm tra xem hai ngày có bằng nhau hay không, trong LINQ (trong đó ngày thứ hai KHÔNG phải là tham số)
- 15. Kiểm tra xem một regex nhất định có khớp với bất kỳ thứ gì
- 16. Kiểm tra xem một số nguyên nằm trong phạm vi
- 17. Kiểm tra xem chuỗi có chứa chỉ các chữ số
- 18. Kiểm tra xem chuỗi có chứa số
- 19. Kiểm tra xem hai mục có nằm trong danh sách không, theo một thứ tự cụ thể?
- 20. Kiểm tra một chuỗi để xem nếu nó chứa ký tự số trong UNIX
- 21. Kiểm tra xem một chuỗi có phải là số
- 22. Có cách nào để kiểm tra xem hai phần tử DOM có bằng nhau hay không?
- 23. Thuật toán để kiểm tra xem một số có phải là số hoàn hảo
- 24. Kiểm tra xem tất cả các giá trị trong mảng có giống nhau không
- 25. Làm cách nào để kiểm tra xem tất cả các mục trong một mảng có giống hệt nhau không?
- 26. Cách sáng tạo để kiểm tra xem số chỉ có một bit trên ký tự int
- 27. Làm cách nào để các trường hợp kiểm tra JUnit chạy theo thứ tự tuần tự?
- 28. Cách kiểm tra xem số có số thập phân không?
- 29. Sắp xếp một số theo thứ tự giảm dần
- 30. Tôi có thể kiểm tra xem một mảng hay không, ví dụ: chỉ giữ số nguyên trong ruby?
Còn 8910 thì sao? Đó có phải là 'chuỗi' không? –
Điều gì về 2335777, là "theo thứ tự"? – Cephalopod