2012-07-30 39 views
5

Cố gắng lấy đầu của tôi xung quanh một số regex bằng cách sử dụng JS .replace để thay thế một số nguyên bằng một chuỗi.JS regex thay thế số

Ví dụ, chuỗi có thể là:

var string = 'image[testing][hello][0][welcome]'; 

Tôi muốn thay thế '0' có giá trị khác. Ban đầu tôi đã sử dụng quyền này:

string.replace(/\[\d\]/g, '[newvalue]'); 

Nhưng khi chúng tôi bắt đầu thay thế hai chữ số trở lên (12, 200, 3204, bạn hiểu ý tôi), nó ngừng hoạt động bình thường. Không chắc chắn làm thế nào để có được nó hoạt động theo cách tôi muốn nó quá.

Xin cảm ơn trước. Được đánh giá cao.

Trả lời

10

Bạn cần phải xác định nhiều chữ số:

string.replace(/\[\d+\]/g, '[newvalue]'); 

JS Fiddle demo

(Lưu ý bản demo sử dụng jQuery để lặp qua các nút, nhưng nó chỉ đơn thuần là một tiện nghi, và không có mang về biểu thức chính quy, nó chỉ thể hiện chức năng của nó.)

Lý do ban đầu của bạn không hoạt động, tôi nghĩ, là vì \d chỉ khớp với một chữ số, trong khi chỉ định toán tử/ký tự + có ký tự trước (trong trường hợp chữ số này) một hoặc nhiều lần.

tham khảo:

3

Sử dụng như sau:

string.replace(/\[\d+\]/g, '[newvalue]');

Điều đó sẽ phù hợp với tất cả các chữ số trong ngoặc đơn.