我有以下正则表达式:
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)
。