仅识别输入中的数字标记(JavaScript)

时间:2017-05-30 00:32:02

标签: javascript html regex

我试图仅计算数字标记的总和,而不是计算附加到单词的数字。

实施例

"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;
&#13;
&#13;

有没有办法只计算数字而不是附加数字?

谢谢

2 个答案:

答案 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)

试试这个公式:

(?:\s|^)\d+(?:\s|$)