2009-03-25 26 views
11

Tôi mới dùng StackOverflow, vì vậy hãy cho tôi biết nếu có cách nào tốt hơn để đặt câu hỏi sau đây.RegEx Numeric Check

Tôi cần tạo cụm từ thông dụng để phát hiện xem trường trong cơ sở dữ liệu có là số hay không và nếu nó nằm trong phạm vi hợp lệ (ví dụ: 1-50). Tôi đã thử [1-50], hoạt động ngoại trừ các trường hợp trong đó một chữ số duy nhất được bắt đầu bằng số 0 (tức là 06). 06 vẫn nên được coi là một số hợp lệ, vì sau này tôi có thể chuyển đổi số đó thành một số.

Tôi thực sự đánh giá cao sự trợ giúp của bạn! Tôi đang cố gắng tìm hiểu thêm về các biểu thức chính quy và đã học tất cả những gì tôi có thể từ: www.regular-expressions.info. Nếu các bạn có đề nghị của các trang web khác để xương lên trên công cụ này tôi sẽ đánh giá cao nó!

+0

Duplicate: http://stackoverflow.com/questions/676467/how-to-match-numbers-between-x- và-y-với-regexp –

+1

Tôi sẽ không gọi nó là bản sao; đây là trường hợp đặc biệt của vấn đề khác và đơn giản hơn nhiều. –

+0

Câu hỏi liên quan này có thể hữu ích: [Cách so khớp các số giữa X và Y với regexp?] (Http://stackoverflow.com/questions/676467/) – Tomalak

Trả lời

16

Hãy thử

^(0?[1-9])|([1-4][0-9])|(50)$ 

Ý tưởng này của regex này là để phá vỡ các vấn đề xuống trường hợp

  • 0? [1-9] sẽ chăm sóc của các trường hợp chữ số duy nhất cho phép tùy chọn trước 0
  • [1-4] [0-9] sẽ xử lý tất cả các số từ 10 đến 49. Điều này cũng allwows cho tiền tố 0 trên một số duy nhất
  • 50 chăm sóc 50
+0

@ybo, đúng vậy. Nhưng họ nói rằng họ muốn 06 vì vậy tôi giả định 00 cũng hợp lệ. – JaredPar

+0

@ Jared, tôi đã xóa nhận xét của tôi sau khi chỉnh sửa, nhưng tôi vẫn hiểu rằng anh ấy cần các giá trị từ 1 đến 50. 0 và 00 nên bị loại trừ, tôi nghĩ vậy. – ybo

+0

@ybo, bạn đã đúng. Tôi đã cập nhật câu trả lời để loại trừ tất cả các hình thức 0 – JaredPar

5

Cụm từ thông dụng hoạt động trên các ký tự (trong trường hợp này là chữ số), không phải là số. Bạn cần phải có một mẫu riêng biệt cho mỗi số chữ số trong mẫu của bạn và kết hợp chúng với | (toán tử OR) giống như các câu trả lời khác đã gợi ý. Tuy nhiên, hãy xem xét chỉ kiểm tra xem văn bản là số với một biểu thức chính quy (như [0-9]+) và sau đó chuyển đổi thành một số nguyên và kiểm tra số nguyên nằm trong phạm vi.

2

Bạn không thể dễ dàng thực hiện việc kiểm tra phạm vi bằng các cụm từ thông dụng. Bạn có thể - với một số công việc - phát triển một mô hình nhận ra một phạm vi số, nhưng nó thường khá phức tạp và khó sửa đổi cho một phạm vi hơi khác.

Bạn nên chia nhỏ phần này thành hai phần.

  1. Nhận dạng mẫu số (^\d+$).

  2. Kiểm tra phạm vi số đó trong chương trình ứng dụng.

0

^0 [1-50] {1,2} $

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