这个子串替换正则表达式可以改进吗?

时间:2010-05-07 13:45:59

标签: javascript regex

我需要从某个字符串替换子字符串。我已经创建了更正的代码。但我不确定这是最好的方法。请看下面的代码:

var str = 'test ruby,ruby on rails,ruby,'
var substr = 'ruby';
var reg = new RegExp(',' + substr + ',|^' + substr + ',', 'gi');
str.replace(reg, ','); //returns "test ruby,ruby on rails,"

4 个答案:

答案 0 :(得分:2)

你可以稍微缩短一下:

var reg = new RegExp('(^|,)' + substr + ',', 'gi');

答案 1 :(得分:1)

试试这个:

var reg = new RegExp("(^|,)" + substr + "(,|$)", "gi");

答案 2 :(得分:1)

除非您的子字符串是以编程方式生成的或基于用户输入,否则在我看来,如果您使用/ /运算符在javascript中定义正则表达式,则更容易阅读。

因此,您可以将reg重新定义为:

reg = /,ruby,|^ruby,/gi;

答案 3 :(得分:0)

要详细说明Sean提到的内容,如果您实际上是以编程方式生成字符串,则可能需要查看this SO question,它具有为javascript转义regexp字符串的函数。酷的东西!祝你好运:)