我试图仅计算数字标记的总和,而不是计算附加到单词的数字。
"11 M22 33"
- 总和将是44,因为22附加到M
我写了这个函数,但似乎它添加了所有数字。如何仅使用正则表达式隔离仅数字标记?
<FORM>
<input type="text" name="phrase" id="calc" value="Enter code" />
<input type="button" value="calcule" onclick="lasomme();" />
<input type="button" value="invers" onclick="inverser();" />
</FORM>
<script>
function lasomme()
{
/*var calcule = document.getElementById("calc").value;
alert(calcule);*/
var k = /^[A-Za-z\-éèàùâêûîôäëüïö]+$/;
var r = /\d+/g;
var s = document.getElementById("calc").value;
var m;
var sam =0;
while ((m = k.r.exec(s)) != null) {
sam += parseInt(m);
m++;
}
alert (sam);
}
</script>
&#13;
有没有办法只计算数字而不是附加数字?
谢谢
答案 0 :(得分:2)
你去吧
str = "11 M22 33";
sum = str.match(/\b\d+\b/g).reduce((a, b) => Number(a) + Number(b));
console.log(sum);
\b
是单词边界metasymbol,它确保表达式仅匹配单独单词的数字。
答案 1 :(得分:2)
试试这个公式: