I created the following code because I'm getting values from an input that only accepts numbers and spaces, and I want to convert and add each number from the input while disregarding the spaces:
// variable textArea is the value from the input
let textArea = document.getElementById("numVal").value;
let regex = /^[0-9\s]*$/;
if(regex.test(textArea) == true) {
let val = Number(textArea) //Used this to convert the string into integer
res1.innerHTML = textArea;
}
// The function that add all numbers is still lacking.
The numbers are collected, but when I add a space, it displays NaN. So, for example, if the textArea is 10, then it will display 10, but when the textArea is 10 (with space), it will display NaN
Match all digits to get an array of digit strings, then turn each string into a number and add them up.
const { value } = document.getElementById("numVal");
if (/^[\d\s]*$/.test(value)) {
const total = (value.match(/\d+/g) || [])
.map(Number)
.reduce((a, b) => a + b, 0);
res1.textContent = total;
}
It might be better UI-wise to prevent non-digits and non-spaces from being entered to begin with, rather than to fail to calculate when unexpected characters are encountered.