我需要将电话号码即时格式化为 10 位数字 - 删除所有空格、破折号、点等。
例如:(123) 321-1234 / 123-321-1234 变为 1233211234
我见过相反的例子,但由于我是 Javascript 新手,我不知道该怎么做。
理想情况下,应该在将数字输入文本字段或按下提交按钮时进行格式化。
PS - 我只知道 HTML,所以请提供 和 标签的代码。
非常感谢您的帮助!
我需要将电话号码即时格式化为 10 位数字 - 删除所有空格、破折号、点等。
例如:(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, '')
不是完美的解决方案,但会起作用。如果您需要在字符串中出现“/”之类的字符之前提取数字,然后使用正则表达式 \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