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

Javascript 这个子字符串替换正则表达式可以改进吗?,javascript,regex,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," 试试这个:

我需要替换某个字符串中的子字符串。我已经为它创建了正确的代码。但我不确定这是不是最好的办法。请参阅下面的代码:

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,"
试试这个:

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

你可以把它缩短一点:

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

除非您的子字符串是通过编程生成的或基于用户输入的,否则在我看来,如果您使用
/
操作符在javascript中定义正则表达式,那么它更容易阅读

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

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

为了详细说明Sean提到的内容,如果您实际上是通过编程方式生成字符串,那么您可能需要检查哪个函数可以为javascript转义regexp字符串。很酷的东西!祝你好运:)

谢谢,这正是我要找的