我想在字符串
中的数学表达式中添加一个右括号var str = "solve this now Math.sqrt(345+6 is good but Math.sin(79 is better.";
var patt1 = /\((d+)/g;
var result = str.match(patt1);
document.getElementById("demo").innerHTML = result;
显示匹配模式(345和(79)。在不更改内容的情况下,如何添加结束括号以使字符串看起来像;
var str = " solve this now Math.sqrt(345)+6 is good but Math.sin(79) is better.
答案 0 :(得分:1)
使用否定先行断言。
var str = "solve this now Math.sqrt(345+6 is good but Math.sin(79 is better.";
console.log(str.replace(/(\(\d+)\b(?!\))/g, "$1)"))
(\(\d+)
捕获\(
和一个或多个数字
(?!\))
仅当匹配后没有关闭大括号)
答案 1 :(得分:0)
检查开口括号后面是否有数字,而不是数字后的右括号
var str = "solve this now Math.sqrt(345+6 is good but Math.sin(79 is better.";
var output = str.replace( /\([\d]+(?!=\))/g, r => r + ")");
<强>输出强>
现在解决这个问题Math.sqrt(345)+6很好,但Math.sin(79)更好。
<强>演示强>
var str = "solve this now Math.sqrt(345+6 is good but Math.sin(79 is better.";
var output = str.replace(/\([\d]+(?!=\))/g, r => r + ")");
console.log(output);
&#13;
您可以包含.
以允许小数
var str = "solve this now Math.sqrt(345.5+6 is good but Math.sin(79.33 is better (232.";
var output = str.replace( /\(\d+(\.(\d)+)?(?!=\))/g, r => r + ")");
<强>输出强>
现在解决这个问题Math.sqrt(345.5)+6很好,但Math.sin(79.33)更好(232)。
<强>演示强>
var str = "solve this now Math.sqrt(345.5+6 is good but Math.sin(79.33 is better (232.";
var output = str.replace( /\(\d+(\.(\d)+)?(?!=\))/g, r => r + ")");
console.log(output);
&#13;