2012-01-11 28 views
5

Trong javascript, tôi có một chuỗi chứa số và tôi muốn tăng giá trị lên một.Làm cách nào để thực hiện các thao tác trên các đối sánh Regre Backreference trong Javascript?

Ví dụ:

var string = "This is a string with numbers 1 2 3 4 5 6 7 8 9 10"; 

var desiredResult = "This is a string with numbers 2 3 4 5 6 7 8 9 10 11"; 

Sử dụng một regex, là nó có thể để thực hiện các hoạt động (Ngoài ra trong trường hợp này) trên backreference phù hợp?

Một tìm thấy một tương tự question sử dụng Ruby:

string.gsub(/(\d+)/) { "#{$1.to_i + 1}"} 

Trả lời

7

Sử dụng string.replace với một chức năng như là đối số thứ hai:

var s1 = "This is a string with numbers 1 2 3 4 5 6 7 8 9 10"; 
var s2 = s1.replace(/\d+/g, function(x) { return Number(x)+1; }); 
s2; // => "This is a string with numbers 2 3 4 5 6 7 8 9 10 11" 

Lưu ý rằng nếu bạn sử dụng các nhóm phù hợp sau đó đối số đầu tiên đến chức năng sẽ là toàn bộ trận đấu và mỗi đối số sau đây sẽ là nhóm đối sánh được đánh số.

var x = "This is x1, x2, x3."; 
var y = x.replace(/x(\d+)/g, function(m, g1) { 
    return "y" + (Number(g1)+1); 
}); 
y; // => "This is y2, y3, y4." 
+0

nhanh. Tôi đã kết thúc bằng cách sử dụng các đối số [n] (so với x) trong mã thực tế của tôi (vì tôi có nhiều backreferences) –

1

Tìm thấy.

var string = "This is a string with Numbers 1 2 3 4 5 6 7 8 9 10"; 
var desiredResult = "This is a string with Numbers 2 3 4 5 6 7 8 9 10 11"; 
var actualResult = string.replace(/([0-9]+)/g, function() { 
    return parseInt(arguments[1])+1 
}); 
console.log(actualResult) 

Có lẽ đã đoán một chức năng ẩn danh sẽ hoạt động.

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