我有以下正则表达式:
var re = new RegExp(/\btranslate\b(\(([-+]?([0-9]+)(\.[0-9]+)?)\s([-+]?([0-9]+)(\.[0-9]+)?)\))/g);
它与“kjgjhgjkg jgjgj kjgjkg hj translate(-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"]。
我认为这应该只是一场比赛,那就是 [“翻译(-0.24588 125.3)”]。
所以,我实际上需要将 "kjgjhgjkg jgjgj kjgjkg hj translate( -0.24588 125.3) jjhkjghj" 字符串。我怎样才能做到这一点?
欢迎提出有关如何改进我的正则表达式或代码其他部分的任何建议。
最佳答案
要在 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)
。
关于javascript - 想要对我的 RegEx(正则表达式)进行更多分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206535/