我正在对网页上的电话号码进行简单的清理,
在许多情况下,我会看到人性化的电话号码,例如1-800 -CONTACTS。我当前的脚本删除了除数字之外的所有内容。
var theValueNumOnly = $.trim($(this).text()).replace(/[^0-9]/g,'');
值变为:1800
有谁知道一个已经将字母转换为数字的简单片段?
我正在对网页上的电话号码进行简单的清理,
在许多情况下,我会看到人性化的电话号码,例如1-800 -CONTACTS。我当前的脚本删除了除数字之外的所有内容。
var theValueNumOnly = $.trim($(this).text()).replace(/[^0-9]/g,'');
值变为:1800
有谁知道一个已经将字母转换为数字的简单片段?
var toPhoneNumber = (function () {
var dict = {
a: 2, b: 2, c: 2,
d: 3, e: 3, f: 3,
g: 4, h: 4, i: 4,
j: 5, k: 5, l: 5,
m: 6, n: 6, o: 6,
p: 7, q: 7, r: 7, s: 7,
t: 8, u: 8, v: 8,
w: 9, x: 9, y: 9, z: 9
}
return function (str) {
return str.toLowerCase().replace(/[^\da-z]/g, '').replace(/([a-z])/g, function (v) {
return dict[v];
});
}
}());
要使用它,只需将您的字符串传递给toPhoneNumber
函数:
var phoneNumber = toPhoneNumber('1-800-CONTACTS');
这是小提琴:http: //jsfiddle.net/ReGYp/1/
这是一篇关于他的主题RegEx for Phone Number Numbers with Letters的帖子,它提供了一个 PHP 解决方案。您可以在正则表达式中通过映射转换为数字的 24 个字母中的每一个来执行此操作。在 PHP 或 python 或您最喜欢的语言中可能更容易。
直接方法(处理大小写):
phone = "1-800-CONTACS"
phone = phone.replace(/[abc]/gi, '2');
phone = phone.replace(/[def]/gi, '3');
phone = phone.replace(/[ghi]/gi, '4');
phone = phone.replace(/[jkl]/gi, '5');
phone = phone.replace(/[mno]/gi, '6');
phone = phone.replace(/[pqrs]/gi, '7');
phone = phone.replace(/[tuv]/gi, '8');
phone = phone.replace(/[wxyz]/gi, '9');
phone = phone.replace(/[^0-9]/g, ' ');
console.log(phone)
=> 1 800 2668227