我有以下正则表达式:

var re = new RegExp(/\btranslate\b(\(([-+]?([0-9]+)(\.[0-9]+)?)\s([-+]?([0-9]+)(\.[0-9]+)?)\))/g);


它与“ kjgjhgjkg jgjgj kjgjkg hj translation(-0.24588 125.3)jjhkjghj”字符串中的“ translate(-0.24588 125.3)”相匹配。

现在,我所处理的内容如下所示。我找到一个特定的字符串,但我想进一步替换该匹配的字符串。

var re = new RegExp(/\btranslate\b(\(([-+]?([0-9]+)(\.[0-9]+)?)\s([-+]?([0-9]+)(\.[0-9]+)?)\))/g);
undefined
var string = "kjgjhgjkg jgjgj kjgjkg hj translate(-0.24588 125.3) jjhkjghj";
undefined
var firstelem = re.exec(string);
undefined
firstelem
["translate(-0.24588 125.3)", "(-0.24588 125.3)", "-0.24588", "0", ".24588", "125.3", "125", ".3"]


此处,[“翻译(-0.24588 125.3)”,“(-0.24588 125.3)”,“-0.24588”,“ 0”,“。24588”,“ 125.3”,“ 125”,“。3”]]。

我认为那应该只是一场比赛,那将是
[“ translate(-0.24588 125.3)”]。

因此,我实际上需要在“ kjgjhgjkg jgjgj kjgjkg hj translation(-0.24588 125.3)jjhkjghj”字符串中用translate(-0.24588,125.3)替换translate(-0.24588 125.3)。我怎样才能做到这一点?

欢迎提供任何有关改善我的正则表达式或代码其他部分的建议。

最佳答案

要在translate(value value)字符串中添加逗号,可以这样修改代码:



var re = /\b(translate\b(?:\((?:[-+]?(?:[0-9]+)(?:\.[0-9]+)?)))\s([-+]?(?:[0-9]+)(?:\.[0-9]+)?\))/g;
var str = 'kjgjhgjkg jgjgj kjgjkg hj translate(-0.24588 125.3) jjhkjghj';
var result = str.replace(re, "$1, $2");
document.write(result);





我所做的是重新分配了捕获组,因此只有两个。第一个(translate\b(?:\((?:[-+]?(?:[0-9]+)(?:\.[0-9]+)?)))匹配translate(value,第二个-([-+]?(?:[0-9]+)(?:\.[0-9]+)?\))-匹配value)

09-11 17:39