2011-06-19 16 views
6

Tôi đang cố gắng để có được một cái gì đó như:làm thế nào để có được 1-100 sử dụng regex

Hello, 0 (dont get) 
    Hello2, 100 (get) 
    hello3, 82 (get) 
    hello< 132 (dont get) 

Tôi đã thực hiện một cái gì đó như thế này cho đến nay:

[a-zA-Z]{1,255},([0-9]{1,3})(?<![0]) 

Nhưng nó không thể có được 132100. Làm thế nào tôi có thể sửa lỗi này?

+0

câu trả lời ngoài, khi bạn hỏi một câu hỏi về một regex, bạn ** nên ** chỉ định những loại regex bạn đang nói về. Ở đây tôi giả định nó giống như Perl hoặc ECMAScript. – Benoit

Trả lời

16

Hãy thử regex này mà phù hợp với một số trong tổng số 1 hoặc 2 chữ số, hoặc 100:

\d{1,2}(?!\d)|100 
+1

cách thức hoạt động? tôi có thể đọc một chút, nhưng?! \ d? Cái quái gì thế? '[a-zA-Z] {1,255}, ([1-9] {1,3} (?! \ d) | 100)' làm việc tuyệt vời cho tôi nhưng vẫn nhận được 132 vv –

+3

'(?! .. .) 'là một xác nhận lookahead tiêu cực, như' (? Benoit

+1

@Adam Ramadhan: Nếu bạn nhận được số hơn 100 thì đó là vì bạn không tích hợp nó vào regexp của riêng bạn và nó cũng có thể khớp ở giữa số. – Benoit

4

Tại sao không giữ nó đơn giản?

^[a-zA-Z]{1,255}, (100|[1-9][0-9]|[1-9])$ 

hoặc tốt hơn chưa

^[a-zA-Z]{1,255}, (100|[1-9][0-9]?)$ 

lưu ý: điều này sẽ không phù hợp với số không prepended ví dụ "Xin chào, 00001". Tuy nhiên, nó có thể được mở rộng dễ dàng:

^[a-zA-Z]{1,255}, 0*(100|[1-9][0-9]?)$ 
+0

@Benoit ở đó, cố định – CAFxX

+1

Tôi thích biểu mẫu thứ hai! +1 – Benoit

1

Hãy thử điều này .. Nó sẽ khớp với 1 đến 99 hoặc 100. Số lớn hơn 100 sẽ không hợp lệ.

(?:\b|-)([0-9]{1,2}|100)\b 

Fiddle liên kết .. https://regex101.com/r/mN1iT5/462

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