javascript
2010-08-03 4236 views 30 likes 
30

cần phải thay thế <wiki>this page</wiki>-<a href='wiki/this_page'>this page</a>
sử dụng chức năng gọi lại:thay thế chức năng gọi lại với trận đấu

text = text.replace(/<wiki>(.+?)<\/wiki>/g, function(match) 
    { 
     return "<a href='wiki/"+match.replace(/ /g, '_')+"'>"+match+"</a>"; 
    } 
); 

kết quả là thẻ <wiki> được bảo tồn (trận đấu đầy đủ) - <a href='wiki/<wiki>this_page</wiki>'><wiki>this page</wiki></a>

Có cách nào để có được khớp với [0], khớp với [1] như trong PHP preg_replace_callback()?

Trả lời

62

Các replace function's callback lấy các kết quả phù hợp làm tham số.

Ví dụ:

text = text.replace(/<wiki>(.+?)<\/wiki>/g, function(match, contents, offset, input_string) 
    { 
     return "<a href='wiki/"+contents.replace(/ /g, '_')+"'>"+contents+"</a>"; 
    } 
); 

(Tham số thứ hai là nhóm chụp đầu tiên)

+1

làm việc. bây giờ tôi biết là tài liệu tham khảo JavaScript là – Qiao

+1

Tôi nghĩ rằng câu trả lời là okay, nhưng nó là quá ngắn. Ngoài ra thứ tự của hai tham số cuối cùng cho hàm phù hợp dường như không chính xác. Xem https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter nơi giải thích rằng có một số lượng thông số khác nhau nhận được bởi hàm phù hợp tùy thuộc vào số lượng "phụ đề được lồng dấu [es]". – user2367418

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