JavaScript-使用变量替换子字符串

JavaScript-使用变量替换子字符串,javascript,Javascript,如何从组合的中删除前缀?因此,我仍然得到pre-1。您不需要正则表达式。只需按原样使用字符串: var prefix = 'pre-', number = 1, combined = prefix + number, prefixRemoved = combined.replace('/' + prefix + '/g', ''); console.debug(prefixRemoved); 您只需将字符串传递给replace(),如下所示: var prefix =

如何从组合的
中删除
前缀
?因此,我仍然得到
pre-1

您不需要正则表达式。只需按原样使用字符串:

var prefix = 'pre-',
    number = 1,
    combined = prefix + number,
    prefixRemoved = combined.replace('/' + prefix + '/g', '');
console.debug(prefixRemoved);

您只需将字符串传递给
replace()
,如下所示:

var prefix = 'pre-',
    number = 1,
    combined = prefix + number,
    prefixRemoved = combined.replace(prefix, '');
console.debug(prefixRemoved);
prefixRemoved = combined.replace(prefix, '');
或者,如果需要正则表达式上的参数,可以从以下字符串创建regexp:

var prefix = 'pre-',
    number = 1,
    combined = prefix + number,
    prefixRemoved = combined.replace(prefix, '');
console.debug(prefixRemoved);
prefixRemoved = combined.replace(prefix, '');
或者,您可以先创建regex对象:

prefixRemoved = combined.replace(new RegExp(prefix, "g"), '');
您需要创建对象:


为什么会发生这种情况:

var prefix = 'pre-',
    number = 1,
    combined = prefix + number,
    prefixRemoved = combined.replace(new RegExp(prefix, 'g'), '');
console.debug(prefixRemoved);

实际上不需要使用正则表达式,因为您只需要执行字符串替换

// this syntax without quotes is shorthand for creating a RegExp object
typeof /aaaa/; // object
/a/ instanceof RegExp; // true

// since String.replace can take a string or a RegExp, it has to assume that any string is just a string 
typeof "/aaaa/"; // string

请在操作中查看它:

您需要
prefixRemoved=combined.replace(前缀“”)

直接调用变量即可


示例:

这是不正确的,它只会替换第一次出现的
前缀。使用
/prefix/g
将替换所有事件。True。但请看示例代码:
pre-1
。因此,没有必要进行全球更换。谢谢你的否决票。+1没有必要投票否决@zzbov。OP从未说过他需要替换多个实例。+1,但我想,从技术上讲,它可以简化为
console.log(number)
在/prefix/g和prefix之间有区别,一个替换一个匹配,另一个替换所有匹配。在这种情况下,这可能不是一个问题,但一般的问题是如何在正则表达式中使用变量。@ZZBOV-我只是想帮助OP解决他的问题。很多人遇到问题时,会先跳到正则表达式。但实际上,这应该是您使用的最后一个工具,在您的工具箱中的所有其他工具都失败之后…全局变量替换非常常见。我宁愿让人们知道如何制作一个简单的正则表达式来做他们需要的事情,而不是因为害怕未知而避免使用正则表达式。@ZZZBOV-他特别要求删除前缀,最好的方法是我向他展示的方式……可能的重复
var prefix = 'pre-',
    number = 1,
    combined = prefix + number,
    prefixRemoved = combined.replace(prefix, '');
console.debug(prefixRemoved);