Xin chào Tôi muốn khớp một số nhỏ hơn hoặc bằng 100, có thể là bất kỳ thứ gì trong vòng 0-100, nhưng regex không được khớp với số lớn hơn 100 như 120 130,150,999, v.v.cách khớp một số nhỏ hơn hoặc bằng 100?
Trả lời
regex cho điều này
perl -le 'for (qw/0 1 19 32.4 100 77 138 342.1/) { print "$_ is ", /^(?:100|\d\d?)$/ ? "valid input" : "invalid input"}'
Làm thế nào về vấn đề này cho các regex:
^([0-9]|[1-9][0-9]|100)$
này sẽ xác nhận 7, 82, 100 cho ví dụ, nhưng sẽ không xác nhận 07 hoặc 082.
Check this out để biết thêm thông tin (và các biến thể bao gồm zero prefixing) trên phạm vi số kiểm tra
Nếu bạn cần để phục vụ cho số dấu chấm động bạn nên read this, đây là một biểu hiện bạn có thể sử dụng:
điểm nổi: ^[-+]?([0-9]|[1-9][0-9]|100)*\.?[0-9]+$
Hãy thử điều này
\b(0*(?:[1-9][0-9]?|100))\b
Giải thích
"
\b # Assert position at a word boundary
( # Match the regular expression below and capture its match into backreference number 1
0 # Match the character “0” literally
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(?: # Match the regular expression below
# Match either the regular expression below (attempting the next alternative only if this one fails)
[1-9] # Match a single character in the range between “1” and “9”
[0-9] # Match a single character in the range between “0” and “9”
? # Between zero and one times, as many times as possible, giving back as needed (greedy)
| # Or match regular expression number 2 below (the entire group fails if this one fails to match)
100 # Match the characters “100” literally
)
)
\b # Assert position at a word boundary
"
Visit here cho các vấn đề trong tương lai.
Sử dụng Mã Khẳng định nếu bạn cần một regex (cuối cùng):
/^(.+)$(??{$^N>=0 && $^N<=100 ? '':'^'})/
Test:
my @nums = (-1, 0, 10, 22, 1e10, 1e-10, 99, 101, 1.001e2);
print join ',', grep
/^(.+)$(??{$^N>=0 && $^N<=100 ? '':'^'})/,
@nums
Kết quả:
0,10,22,1e-010,99
đã cố gắng xem liên kết nhưng vẫn không hiểu được regexp. Bạn có nghĩ rằng bạn có thể giải thích nó? (đặc biệt là ---? '': '^' --- phần – taiko
regex này phù hợp với số 0-100 nhịp điệu và không cho phép con số như 001:
\b(0|[1-9][0-9]?|100)\b
Lời khuyên thiết thực của tôi.
Cá nhân, tôi sẽ kiềm chế viết một regex phức tạp như vậy. Điều gì sẽ xảy ra nếu số của bạn thay đổi từ 100 đến 200 trong tương lai gần. Regex của bạn sẽ phải thay đổi đáng kể và thậm chí có thể khó viết hơn. Tất cả các giải pháp trên KHÔNG tự giải thích và bạn sẽ phải bổ sung nó với một bình luận trong mã của bạn. Đó là một mùi.
Các vấn đề về khả năng đọc. Mã dành cho con người chứ không phải cho máy móc.
Tại sao không viết một số mã xung quanh nó và giữ cho regex chết đơn giản để hiểu.
này phù hợp với 0 để 100
^0*([0-9]|[1-8][0-9]|9[0-9]|100)$
- 1. Nhỏ hơn hoặc bằng
- 2. Một checkin lớn hoặc một số nhỏ hơn?
- 3. sql sử dụng "nhỏ hơn hoặc bằng" & "không lớn hơn"
- 4. nhỏ hơn hoặc bằng SỬ DỤNG TRONG Oracle SQL
- 5. Các Elementtree hoặc lxml nhỏ gọn hơn
- 6. Cách tách một tệp văn bản lớn thành các tệp nhỏ hơn với số dòng bằng nhau?
- 7. Một tệp javascript lớn hoặc nhiều tệp nhỏ hơn?
- 8. Có thể tạo một div 50px nhỏ hơn 100% trong CSS3 không?
- 9. PHP/MySQL: Truy vấn SQL lớn hoặc một số truy vấn nhỏ hơn?
- 10. Tại sao kích thước cửa sổ nhỏ hơn hoặc bằng một nửa số thứ tự trong giao thức SR?
- 11. Python: thích nhiều mô-đun nhỏ hơn hoặc một mô-đun lớn hơn?
- 12. Scala: cách chia nhỏ bằng cách sử dụng nhiều hơn một dấu phân cách
- 13. Dòng TextViewSpacingMultiplier nhỏ hơn số không cho dòng cuối cùng
- 14. Cách làm cho TimePicker nhỏ hơn
- 15. MongoDB - tìm kết quả có giá trị bằng hoặc nhỏ hơn X
- 16. Một tệp lớn hoặc nhiều tệp nhỏ?
- 17. Hiển thị 100 khối nổi bằng DirectX HOẶC OpenGL
- 18. Làm thế nào để thực hiện một bộ lọc nhỏ hơn hoặc bằng bộ lọc truy vấn Django?
- 19. Nếu .. số khác nhỏ hơn, không thể truy cập đang
- 20. Số vòng ở đầu ra để hiển thị số lượng gần bằng không nhỏ bằng không
- 21. Express số lượng điểm nổi cao nhất nhỏ hơn 1
- 22. So khớp một chuỗi trong một vector lớn hơn
- 23. java bằng 100% cpu
- 24. Chia nhỏ hơn Multiply?
- 25. Làm cách nào để gọi hơn 100 trạng thái bằng API Facebook?
- 26. Cái nào hiệu quả hơn trong SVG, nhiều đường nhỏ hoặc một đường dẫn khổng lồ?
- 27. Cách tạo 5 số ngẫu nhiên với tổng số 100
- 28. Có tốt hơn khi tải nhiều tệp JavaScript nhỏ hoặc một tệp JavaScript lớn không?
- 29. Điều gì tốt hơn - nhiều bảng nhỏ hoặc một bảng lớn?
- 30. Tìm một hình ảnh nhỏ trong một lớn hơn một
Làm thế nào về '0.5' hoặc '1e2'? Những trận đấu đó phải không? Còn về '0000001' thì sao? –
Tại sao bạn muốn sử dụng regex cho điều này? Perl đã có các toán tử so sánh Boolean hoàn toàn có ích (<, <=, ==, >,> =). –
Như Dave đã nói, bạn có chắc chắn muốn biểu hiện chính quy không? Perl sẽ coi một biến như một chuỗi hoặc một số có thể hoán đổi cho nhau, và bạn có thể viết 'if ($ num> = 0 và $ num <= 100) {...}' – Borodin