'remove space, -, () from phone number

I have an array of objects which are phone numbers such as:

phoneArray = [{"phone": "+11 111 111"},{"phone": "+22 222 222"}]

I did a loop on it to remove spaces because I want this result:

[{"phone": "+11111111"},{"phone": "+22222222"}]

but I only could remove the first space which looked like

[{"phone": "+11111 111"},{"phone": "+22222 222"}

with this code:

for(i=0 ; i<phoneArray.length ; i++) {

let test = phoneArray[i].phone.replace(" ","");
}

I actually have other phone numbers like {"phone": "(22) 222-222"} to format but if I can remove space I can remove other signes like ()- I think.

I don't use regex because I don't understand it yet.



Solution 1:[1]

To remove all characters except for + and numbers, you can do this:

let p = "+1 (555) 555-555"

console.log(p.replace(/[^\d\+]/g,''))

Solution 2:[2]

You can pass a regex pattern to your replace function. Like that:

let p = "+(11) 111 111-11"

console.log(p.replace(/[\s\-\(\)]/g,''))

Solution 3:[3]

I would use the map function to iterate the array and change each of the values, to each value will apply the function replace with a regex in order to remove the non digits number and +.

phoneArray = [{"phone": "+11 111 111"},{"phone": "+22 222 222"}]
phoneArray = phoneArray.map(p => {
   return {
     phone: p.phone.replace(/[^+\d+]/g,"")
   }
})
console.log(phoneArray)

Solution 4:[4]

You can try phone.replace(/\D/g,'') this will replace all non-numeric characters and will give you the numbers, hope this helps.enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Samathingamajig
Solution 2
Solution 3
Solution 4