Подтвердить что ты не робот

Вставка дефис в javascript

Каков самый простой способ вставки дефис в javascript?

У меня есть номер телефона eg.1234567890

пока отображается в переднем конце, я должен отображать его как 123-456-7890 с помощью javascript.

Каков самый простой и быстрый способ достичь этого?

Спасибо

4b9b3361

Ответ 1

Самый быстрый способ был бы с некоторым регулярным выражением:

Где n это число

n.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");

Пример: http://jsfiddle.net/jasongennaro/yXD7g/

var n = "1234567899";
console.log(n.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3"));

Ответ 2

Вы можете использовать substr-функцию для достижения этого, предположив, что дефисы всегда вставлены в одну и ту же позицию:

var hypString = phonestr.substr(0,3) + '-' + phonestr.substr(3, 6) + '-' + phonestr.substr(6);

Ответ 3

Учитывая этот тип ввода, другой способ:

var phone = "1234567890";
phone = phone.replace(/(\d{3})(\d{3})(\d+)/, '$1-$2-$3');

Конечно, это не работает, если ваш вход меняется.

Ответ 4

Вы можете создать функцию javascript для форматирования номера телефона. Что-то вроде этого:

    function formatPhoneStr(o)
    {
        var strPhone = o.value;

        if( (strPhone != null) && (strPhone.length > 0) && (strPhone.indexOf('(') == -1))
        {
            if (strPhone.length == 10)
            {
                strPhone = '(' + strPhone.substr(0,3) + ') ' + strPhone.substr(3,3) + '-' + strPhone.substr(6,4);
            }
            else if (strPhone.length > 10)
            {
                strPhone = '(' + strPhone.substr(0,3) + ') ' + strPhone.substr(3,3) + '-' + strPhone.substr(6,4) + ' x' + strPhone.substr(10);
            }
            o.value = strPhone;
        }
    }

Ответ 5

попробуйте это...

<input required type="tel" maxlength="12" onKeypress="addDashesPhone(this)" name="Phone" id="Phone">    

function addDashesPhone(f) {
  var r = /(\D+)/g,
  npa = '',
  nxx = '',
  last4 = '';
  f.value = f.value.replace(r, '');
  npa = f.value.substr(0, 3);
  nxx = f.value.substr(3, 3);
  last4 = f.value.substr(6, 4);
  f.value = npa + '-' + nxx + '-' + last4;
}

Ответ 6

Еще одна альтернатива, которая, по моему мнению, самая чистая: строковый метод slice.

formattedPhone = phone.slice(0,3) + '-' + phone.slice(3, 6) + '-' phone.slice(6)

Первый параметр - это начальная позиция в строке, вторая - конечная позиция. Как вы можете видеть выше, никаких параметров он не доходит до конца строки. Хорошей особенностью является то, что, как и Python, отрицательные позиции подсчитываются от конца строки. Это может сделать ваш код несколько более надежным:

formattedPhone = phone.slice(0,3) + '-' + phone.slice(3, -4) + '-' + phone.slice(-4)

Даже если у вас есть телефон с 9 или 11 цифрами, он будет выглядеть хорошо.

Ответ 7

Если вы используете клиентскую библиотеку ASP.NET, у них есть отличный метод String.format, который предоставляет языковые форматы и всевозможные причудливые вещи. Этот метод называется так, как вы ожидали бы, если вы знакомы с .NET:

<script type="text/javascript">
    var myPhone = String.format("{0}-{1}-{2}", firstThree, secondThree, lastFour);
</script>

Если вы не используете библиотеку ASP.NET, я уверен, что вы можете получить рудиментарное форматирование, выполненное в вашей собственной реализации, - очевидно, это было бы без локализации, и вы должны бросить некоторую обработку/проверку ошибок в миксе:

function format(str, arr){
     for(var i = 0; i < arr.length; i++) {
         var r = new RegExp("\\{" + i + "\\}", "g");
         str = str.replace(r,arr[i]);
    }
    return str;
}
alert(format("{0}-{1}-{2}", [123,456,7890]));

Ответ 8

здесь мое решение на всякий случай, когда это помогает кому-то:

validatePhone: функция (e) {

    var number = this.$el.find('#phoneNumberField').val().replace(/-/g, '');

    if(number.length > 10) {
        e.preventDefault();
    }

    if(number.length < 3) {
        number = number; // just for legibility
    } else if(number.length < 7) {
        number = number.substring(0,3) + 
        '-' + 
        number.substring(3,6)
    } else if(number.length > 6) {
        number = number.substring(0,3) + 
        '-' + 
        number.substring(3,6) + 
        '-' + 
        number.substring(6,10);
    }

    this.$el.find('#phoneNumberField').val(number);

}