2010-11-16 32 views
14

Tôi có biểu thức chính quy sau:JavaScript ngoại lệ biểu thức chính quy (nhóm không hợp lệ)

/(?<={index:)\d+(?=})/g 

Tôi cố gắng để tìm thấy chỉ số nguyên trong chuỗi như thế này một:

some text{index:1}{id:2}{value:3} 

Cái vẻ hoạt động tốt với php, nhưng nó không hoạt động trong javascript, tôi nhận được lỗi sau:

Uncaught SyntaxError: Invalid regular expression: /(?<={index:)\d+(?=})/: Invalid group

Tôi cần gì sửa chữa?

Cảm ơn.

+0

thử thoát dấu ngoặc nhọn của bạn. – drudge

+0

@jnpcl Tôi vừa thử nó một phút trước 'Uncaught SyntaxError: Biểu thức chính quy không hợp lệ:/(? <= \ {Index:) \ d + (? = \}) /: Nhóm không hợp lệ' nó không hoạt động, trừ khi có một cách khác để thoát khỏi dấu ngoặc nhọn khác với '\ {' –

Trả lời

4
var str = "some text{index:1}{id:2}{value:3}"; 
var index = str.match(/{index:(\d+)}/); 
index = index && index[1]*1; 
+0

Ah, tôi thấy, không có '/ g' thực sự giúp =) –

31

(?<=) là hình thức tích cực. Hương vị của RegEx của JavaScript không hỗ trợ lookbehinds (nhưng nó hỗ trợ lookaheads).

+2

Bạn nói đúng, bất kỳ trợ giúp nào với biểu thức cụ thể? –

+1

@mike: Vui lòng xây dựng ... – alex

8

JavaScript không hỗ trợ xác nhận phía sau. Sử dụng mẫu này thay thế:

/{index:(\d+)}/g 

Sau đó, trích xuất giá trị được chụp trong nhóm.

+0

nó trích xuất toàn bộ điều, trong trường hợp của tôi, tôi chỉ cần một số nguyên. –

+0

@negative: Lưu ý các dấu ngoặc đơn xung quanh '\ d +'; số nguyên được ghi trong nhóm # 1. –

+0

@Alan Moore, có thể tôi đang làm điều gì sai, nhưng '" một số văn bản {chỉ số: 1} {id: 2} {giá trị: 3} ". (/ {Index: (\ d +)}/g) [ 0] 'trả về' {index: 1} 'AND' "một số văn bản {index: 1} {id: 2} {giá trị: 3}". Match (/ {index: (\ d +)}/g) [1] 'trả về 'không xác định'. –

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