Câu hỏi Chèn dấu gạch nối trong javascript


Cách dễ nhất để chèn dấu gạch nối trong javascript là gì?

Tôi có một số điện thoại eg.1234567890

trong khi hiển thị ở giao diện người dùng, tôi phải hiển thị nó dưới dạng 123-456-7890 bằng javascript.

cách đơn giản nhất và nhanh nhất để đạt được điều này là gì?

Cảm ơn


16
2017-08-08 11:34


gốc


Bạn sẽ có sức chứa số điện thoại quốc tế? - Kevin Bowersox


Các câu trả lời:


Cách nhanh nhất sẽ là với một số regex:

Ở đâu n là số

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

Thí dụ: http://jsfiddle.net/jasongennaro/yXD7g/


31
2017-08-08 12:03



7 năm sau, vẫn là giải pháp tốt nhất. - 88 MPG


Bạn có thể sử dụng hàm nền để đạt được điều này, giả sử rằng dấu gạch ngang luôn được chèn vào cùng một vị trí:

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

5
2017-08-08 11:39



Bài đăng đầu tiên == câu trả lời đúng. Xin chúc mừng. - selbie


Với kiểu đầu vào này, một cách khác sẽ là:

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

Tất nhiên điều này không hoạt động nếu đầu vào của bạn thay đổi.


3
2017-08-08 12:03



Có vẻ như chúng tôi đang nghĩ cùng một @Felix! - Jason Gennaro
@ Jason: Bây giờ câu hỏi là liệu điều này là tốt hay xấu;): D - Felix Kling
đó là câu hỏi ;-) - Jason Gennaro
Cộng 1 để mang điều này đến cùng một điểm với câu trả lời của Jason! - Timothy Gu


Bạn có thể tạo một hàm javascript để định dạng số điện thoại. Một cái gì đó như thế này:

    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;
        }
    }

1
2017-08-08 11:42



1 cho mã không phá vỡ đầu vào lạ. - Aaron Digulla


thử cái này...

<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;
}

0
2018-02-04 22:00





Một giải pháp thay thế khác mà tôi tin là giải pháp sạch nhất: slice phương thức chuỗi.

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

Tham số đầu tiên là vị trí bắt đầu trong chuỗi, thứ hai là vị trí kết thúc. Như bạn có thể thấy ở trên, không có tham số nào cho đến khi kết thúc chuỗi. Một tính năng thú vị là, giống như Python, các vị trí phủ định tính từ cuối chuỗi. Điều này có thể làm cho mã của bạn phần nào mạnh mẽ hơn:

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

Ngay cả khi bạn có điện thoại có 9 hoặc 11 chữ số, nó sẽ trông đẹp mắt.


0
2018-02-24 03:40





Nếu bạn đang sử dụng thư viện máy khách ASP.NET, họ có một phương thức String.format tuyệt vời cung cấp các định dạng miền địa phương và tất cả các loại công cụ ưa thích. Phương thức này được gọi là bạn mong đợi nếu bạn quen với .NET:

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

Nếu bạn không sử dụng thư viện ASP.NET, tôi chắc chắn bạn có thể có được định dạng thô sơ được thực hiện trong thực hiện của riêng bạn - rõ ràng đây sẽ là nội địa hóa và bạn nên ném một số lỗi xử lý / kiểm tra trong hỗn hợp:

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]));

-1
2017-08-08 11:58





đây là giải pháp của tôi chỉ trong trường hợp nó giúp ai đó:

validatePhone: function (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);

}


-1
2017-07-17 23:45