使用正则表达式将最后一个逗号分隔值替换为另一个

时间:2015-11-17 07:12:50

标签: javascript jquery regex

我有一个字符串如下:

var str = "a,b,c,a,e,f"; 

我需要的是将另一个逗号分隔的元素替换为另一个。

ie, str = "a,b,c,a,e,anystring"; 

我使用split方法完成了它并添加它以创建一个新字符串。但它没有按预期工作

我做了如下:

var str = "a,b,c,d,e,f";

var arr = str.split(',');

var res = str.replace(arr[5], "z");
alert(res);

是否有正则表达式可供帮助?

2 个答案:

答案 0 :(得分:10)

您可以使用 replace() 与正则表达式 /,[^,]+$/ 匹配最后一个字符串



var str = "a,b,c,d,e,old";
var res = str.replace(/,[^,]+$/, ",new");
// or you can just use
// var res = str.replace(/[^,]+$/, "new");
document.write(res);




Regular expression visualization

<小时/> 或者您可以使用正则表达式str.replace(/[^,]+$/, "new");

&#13;
&#13;
var str = "a,b,c,d,e,old";
var res = str.replace(/[^,]+$/, "new");
document.write(res);
&#13;
&#13;
&#13;

或使用 split() ,将最后一个数组值替换为新字符串,然后使用 join() 方法再次加入

&#13;
&#13;
var str = "a,b,c,d,e,old";
var arr = str.split(',');
arr[arr.length - 1] = 'new';
var res = arr.join(',');
document.write(res);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您可以使用String.substring() String.lastIndexOf()

function replaceStartingAtLastComma(str, rep){
  return str.substring(0, (str.lastIndexOf(',')+1))+rep;
}
console.log(replaceStartingAtLastComma('a,b,c,d,e,f', 'Now this is f'));