2012-03-11 39 views
5

Tôi thấy điều này: Regex to match digits of specific length nhưng nó nói về Python. Tôi muốn có thể nhận được một nhóm các số ngẫu nhiên có chiều dài cụ thể. Vì vậy, nếu tôi có 167691#15316243, nó sẽ khớp với 15316243. Tôi không chắc chắn làm thế nào để thực hiện điều này. ngay bây giờ tôi có new RegExp('[0-9]+', "g"); phù hợp với một nhóm các con số tốt, nhưng bây giờ tôi nhận ra tôi sẽ có một số lần khi tôi có nhiều hơn một nhóm và tôi chỉ muốn nhóm tám số.Regex có khớp với một nhóm chữ số cụ thể có độ dài nhất định không?

Trả lời

10

Bạn có thể chỉ định độ dài của tập hợp kết hợp bằng {}.

Ví dụ: [0-9]{8}

nào sẽ phù hợp với bất kỳ số 0-9 với chiều dài cụ thể của 8 ký tự.

Bạn cũng có thể chỉ định phạm vi phút/tối đa thay vì buộc một phần cụ thể. Vì vậy, nếu bạn muốn có tối thiểu 4 và tối đa 8 ví dụ sẽ thay đổi thành: [0-9]{4,8}

+0

Bạn gần như chắc chắn muốn có ranh giới. – tchrist

2

Đơn giản chỉ cần đặt số lượng lặp đi lặp lại trong dấu ngoặc nhọn:

"167691#15316243".match(/\d{8}/g); 

Đây là fiddle: http://jsfiddle.net/3r5vd/


tôi muốn đề nghị bạn đọc this article (cuộn xuống phần về Hạn chế Lặp lại).

Dưới đây là báo giá:

Modern hương vị regex [...] có một nhà điều hành lặp lại bổ sung mà cho phép bạn xác định bao nhiêu lần một mã thông báo có thể được lặp đi lặp lại. Cú pháp là {min,max}, trong đó min là số nguyên dương cho biết số lượng kết quả phù hợp tối thiểu và max là số nguyên bằng hoặc lớn hơn min cho biết số lượng kết quả phù hợp tối đa. Nếu dấu phẩy hiện diện nhưng max bị bỏ qua, số lượng kết quả trùng khớp tối đa là vô hạn. Vì vậy, {0,} giống với *{1,} giống với +.
Bỏ qua cả dấu phẩy và số tối đa yêu cầu công cụ lặp lại mã thông báo chính xác min lần.

14
[0-9]+ - Matches one or more numbers 
[0-9]{8} - Matches exactly 8 numbers. 
[0-9]{8,10} - Matches between 8 and 10 numbers. 
[0-9]{8,} - Matches 8 or more numbers. 
[0-9]* - Matches zero or more numbers. 
[0-9]? - Matches zero or one number. 
+0

[0-9] {8,} - độ dài tối thiểu là 8 – ThoQ

+0

@ThoQLuong đã thêm, cảm ơn! Không thể chấp nhận đánh giá do yêu cầu về danh tiếng. – Nathan

+0

Lưu ý quan trọng: không thêm dấu cách sau dấu phẩy trong '{8,10}'. Nó phải chính xác là '{8,10}' không '{8, 10}' – Alendorff

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