将电话号码格式化为10位数字/删除多余字符

Format Phone # into 10 Digits / Remove extra characters

本文关键字:删除 多余 字符 数字 10位 电话号码 格式化      更新时间:2023-09-26

我需要将一个电话号码快速格式化为10位数-删除所有空格、破折号、点等。

EX:(123)321-1234/123-321-1234变为1233211234

我看到过相反的例子,但由于我是Javascript的新手,我不知道如何做到这一点

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

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

非常感谢你的帮助!

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

<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函数只是希望能够在浏览器之间一致地向元素可靠地添加事件处理程序。

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

("(123) 321-1234").replace(/[^'d]/g, '')

不是完美的解决方案,但会起作用。如果您需要从字符串中提取一个出现诸如"/"之类的字符之前的数字,然后使用regex''D从字符串中删除非数字字符,然后在下面的示例US Tel format中以所需格式映射数字,请使用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