только такие варианты подходят вида +2992924004
не подходят
++39393
++++0202020
3030030+39339
2929+02002+++292929
02020++++++++++
Делаю вот так:
value.replace(/[^+\d]/g, '').replace(/(\d)\++/g, '$1')
но при этом не удаляется плюс, если два вподряд ++, а так такой вариант мне подходит.
function clean(str) {
return str.replace(/(?!^\+|\d)./g, "")
}
document.querySelector('input').addEventListener('input', function (e) {
document.querySelector('output').textContent = clean(e.target.value)
})
input { width: 100%; box-sizing: border-box; }
<input><output></output>
Вы можете использовать
.replace(/^(\+)|\D+/g, "$1")
См. демо регулярного выражения.
^ - начало строки(\+) - Захватывающая подмаска №1: плюс| - или\D+ - один и более знаков, отлчных от цифры.Если была найдена подмаска №1, её текст вставляется обратно с помощью $1, т.е. если плюса в начале строки не было, его там и не будет.
var strs = ['+2992924004', '++39393', '++++0202020', '3030030+39339', '2929+02002+++292929', '02020++++++++++'];
for (var value of strs) {
console.log(value, "=>", value.replace(/^(\+)|\D+/g, "$1"));
}
let str = "+38 (099) 999-99-99";
alert(str.replace(/ |\-|\)|\(/g,""));
let number_str = "+38 (099) 999-99-99";
function clear_number(number)
{
let new_number = number.replace(/[\D]/g,"");
if(new_number.length != 0) new_number = "+" + new_number;
return new_number;
}
alert(clear_number(number_str));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости