Javascript 使用正则表达式将2x更改为2*x?

Javascript 使用正则表达式将2x更改为2*x?,javascript,regex,Javascript,Regex,我的目标是改变例如:2x到2*x。我想做的是: string.replace(new RegExp("[0-9]+x", "g"), //what here?); 但我不知道用什么来代替它。我需要参考数字和x,才能输入数字+*+x。如果您知道其他不使用RegEx的解决方案,也可以使用它。使用以下方法: string.replace(/(\d+)(x)/g, '$1*$2') 首先,您不需要使用新的RegExp…,只需将RegEx括在/,如/[0-9].other.data/。在结尾/后使用g

我的目标是改变例如:2x到2*x。我想做的是:

string.replace(new RegExp("[0-9]+x", "g"), //what here?);
但我不知道用什么来代替它。我需要参考数字和x,才能输入数字+*+x。如果您知道其他不使用RegEx的解决方案,也可以使用它。

使用以下方法:

string.replace(/(\d+)(x)/g, '$1*$2')
首先,您不需要使用新的RegExp…,只需将RegEx括在/,如/[0-9].other.data/。在结尾/后使用g使其成为全局性的,如上面的示例-/this.is.a.global.regex/g

其次,\ d是[0-9]的简写形式

在第二个参数中,它有$1和$2。这些分别指第一和第二捕获组$n将包含来自第n个捕获组的数据

演示:

字符串='2x' 新字符串=字符串。替换/\d+x/g,'$1*$2'
document.writenew_string这是我能做的最短的:

string.replace(/\d(?=x)/g, '$&*')

您只需要一个数字来查找,并使用x进行前瞻


文档。写“2x”。替换/\d?=x/g,\$&*;你是说2x2>2*x2?如果Javascript支持lookback,我会这么做?我没想到,它会更短+实际上,我把我的头发改短了!为什么要使用?=x,只需像这样使用/\d+/,string.replace/\d+/,需要“$&*”@Druzion?=x,否则它将选择比Nessery更多的数字。因为x是已知的文字子模式,所以可以避免第二次反向引用。只需在替换模式中使用x。@Yoshi:这里的每个人都有一个问题:@WiktorStribiżew我知道,但我必须选择一个,我不想把所有答案都发垃圾邮件;P@Yoshi我不认为你必须逃避他们,但是我看到另一个答案,就在我发布我的答案之后,所以我也逃避了。我想也许这样更安全,虽然我以前从未这样做过!现在把它改回来;较短的版本会在每个数字后面添加一个*,即使后面没有x。0美元不能在JS中使用,您需要$&。@WiktorStribiżew,在ie11中它与0美元一起工作,谢谢您给我指出这个问题。