2

我需要将电话号码即时格式化为 10 位数字 - 删除所有空格、破折号、点等。

例如:(123) 321-1234 / 123-321-1234 变为 1233211234

我见过相反的例子,但由于我是 Javascript 新手,我不知道该怎么做。

理想情况下,应该在将数字输入文本字段或按下提交按钮时进行格式化。

PS - 我只知道 HTML,所以请提供 和 标签的代码。

非常感谢您的帮助!

4

3 回答 3

4

您可以使用正则表达式从文本框的值中删除所有非数字。这是一个例子:

<input type="text" id="text1" />

有了这个 JS:

function addEvent(element, eventName, callback) {
    if (element.addEventListener) {
        element.addEventListener(eventName, callback, false);
    } else if (element.attachEvent) {
        element.attachEvent("on" + eventName, callback);
    }
}

addEvent(window, "load", function () {
    addEvent(document.getElementById("text1"), "change", function () {
        var tel = this.value;
        tel = tel.replace(/\D+/g, "");
        this.value = tel;
    });
});

演示:http: //jsfiddle.net/6vC3x/

当文本框的值更改(通过用户输入)并且文本框模糊(未选中)时,会发生替换。

整个addEvent函数只是希望可靠地跨浏览器向元素添加事件处理程序。

于 2013-06-27T18:29:27.600 回答
1

只需将所有非数字字符替换为空字符串即可。

("(123) 321-1234").replace(/[^\d]/g, '')
于 2021-06-15T13:25:14.970 回答
0

不是完美的解决方案,但会起作用。如果您需要在字符串中出现“/”之类的字符之前提取数字,然后使用正则表达式 \D 从字符串中删除非数字字符,然后在以下示例中以所需格式映射数字,请使用 split格式。

`let rawString = "111.222.3333 / need to remove this text (some more text)"

 const formatTelNumber = (phoneNumberString) => {
   let stringWithNumber = phoneNumberString.split("/")[0]
   let cleaned = ("" + stringWithNumber).replace(/\D/g, "")
   let match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/)
   if (match) {
     return `(${match[1]}) ${match[2]}-${match[3]}`
   }
   return null;
};
console.log(formatTelNumber(rawString))`

干杯! JK

于 2021-02-25T12:50:21.903 回答