Преобразовать номер телефона к виду +7(000)000-00-00

206
04 апреля 2018, 10:03

Есть клиентская база, в которую заносятся номера в формате:

0000000000

Нужен скрипт, который преобразует в:

"+7(000)000-00-00"

Поле, в которое заносятся номера, именуется как: $line['f5091'].

Пробовал так:

const numberValueReduced = `$line['f5091']` => {
    return phone.replace('/^(\d{3})(\d{3})(\d{2})(\d{2})$/iu', '+7 ($1) $2-$3-$4', $int);
};

Не вышло.

Answer 1

Пробовал так:

const numberValueReduced = $line['f5091'] => { return phone.replace('/^(\d{3})(\d{3})(\d{2})(\d{2})$/iu', '+7 ($1) $2-$3-$4', $int); };

Не вышло.

Это очевидный копипаст из похапэ, но все же объясню, почему он не работает:

  • вместо имени аргумента функции, указан строковый литерал
  • первым аргументом в replace передаете строку с регулярным выражением (вместо самого регулярного выражения)
  • флаги не нужны (i - у числовых символов нет регистра; u - только если входная строка содержит юникод-последовательности)
  • зачем-то передаете в reduce третий аргумент


Пример кода:

const numberValueReduced = phone => { 
    return phone.replace(/^(\d{3})(\d{3})(\d{2})(\d{2})$/, '+7 ($1) $2-$3-$4'); 
}; 
 
let btnTest = document.getElementById('test'),  
    result  = document.getElementById('result');  
btnTest.addEventListener('click', () => { 
  let nmbr  = rnd(10), 
      frmtd = numberValueReduced(nmbr);  
  result.innerHTML = `${nmbr}<br>${frmtd}`;  
}); 
 
function rnd(n) { 
  let str = '';  
  while (n-- > 0)  
    str += Math.floor(Math.random() * 10);  
  return str;  
}
body, 
button { 
  font: 16px sans-serif;  
  text-align: center;  
} 
 
#result { 
  min-height: 70px;  
  margin-top: 30px;  
  font-size: 20px;  
} 
 
#test { 
  width: 250px; height: 35px; 
  border: 0; 
  text-transform: uppercase;  
  background-color: #44d; color: #fff;  
  box-shadow: 0 2px 8px -2px #0007;   
}
<div id="result"></div> 
<button id="test">Случайный номер</button>

READ ALSO
Почему не выполняется callback?

Почему не выполняется callback?

Callback response возвращает undefined

270
Application with Ethereum Smart Contracts [требует правки]

Application with Ethereum Smart Contracts [требует правки]

I need to create ios,android,web application which must interact with Ethereum blockchainApplication will have users

224
Как правильно обработать событие JQUERY

Как правильно обработать событие JQUERY

Имеется div id="ui-datepicker-div", в котором есть таблица и ссылка с class='ui-state-default'Как мне сделать обработку клика по ссылке с class='ui-state-default' именно с текущим...

209
JS валидация логина

JS валидация логина

Есть логин формаЛогин проходит валидацию вот так

173