我有一个类似的输入:
<textarea name='phone_number' id='phone_number' cols='80' rows='1'><? echo $_POST['phone_number']; ?></textarea>
好吧,我用PHP做了一个函数来验证电话号码(检查它不是空的,里面没有字符,只有+和数字)
和现在,我想用一些JQuery/JavaScript的东西在输入中内联格式化它,但我想的格式是国际的,比如我有:
0016073222153
为+1 607-322-2153
0049329351525
为+49 329-351-525
有什么想法吗?我该怎么做?谢谢!谢谢
我假设了很多,但它符合您的用例,可能会让您启动
var num1 = "0016073222153",
num2 = "0049329351525";
$(document).ready(function() {
$('body').append(
phoneFormat(num1) + "<br />" +
phoneFormat(num2)
);
});
function phoneFormat(num) {
num = num.replace(/^0+/, '');
num = num.replace(/[^0-9]/, '');
if (num.length == 11) {
if (num.substr(0, 1) == 1) num = "+1 " + num.substr(1, 3) + "-" + num.substr(4, 3) + "-" + num.substr(7, 4);
else num = "+" + num.substr(0, 2) + " " + num.substr(2, 3) + "-" + num.substr(5, 3) + "-" + num.substr(8, 3);
}
return num;
}
http://jsfiddle.net/tnv2m/
对于国家代码来说,这不是很复杂(我认为),只是一些繁重的工作。
你可以在这里获得国家代码列表。然后获取第一个数字,并从调用代码表中确定是否有下一个数字需要读取;重复,直到您确定了国家/地区代码。
对于其余的数字,你可以做一些类似的事情:
join('-', str_split($nr, 3));
这将为您提供一组3位数字,用短划线分隔。
您将无法以通用方式做到这一点。每个国家都有不同的格式,不同的地区编号等等。如果没有准确的数据库来保存所有的格式规则,你就不会有任何结果。要么是你知道规则的国家的格式,要么放弃这个想法。