Javascript JS-针对电话号码的正则表达式

Javascript JS-针对电话号码的正则表达式,javascript,regex,Javascript,Regex,我正在对我的网页上的电话号码进行简单的清理 在许多情况下,我会看到人性化的电话号码,比如1-800-联系人。 我当前的脚本删除了除数字以外的所有内容 var theValueNumOnly = $.trim($(this).text()).replace(/[^0-9]/g,''); 该值变为:1800 有人知道一个简单的代码片段已经将字母转换成数字了吗 这里有一篇关于他的主题的帖子,提供了一个PHP解决方案。您可以在正则表达式中通过映射转换为数字的24个字母中的每一个来实现这一点。用PHP、

我正在对我的网页上的电话号码进行简单的清理

在许多情况下,我会看到人性化的电话号码,比如1-800-联系人。 我当前的脚本删除了除数字以外的所有内容

var theValueNumOnly = $.trim($(this).text()).replace(/[^0-9]/g,'');
该值变为:1800


有人知道一个简单的代码片段已经将字母转换成数字了吗

这里有一篇关于他的主题的帖子,提供了一个PHP解决方案。您可以在正则表达式中通过映射转换为数字的24个字母中的每一个来实现这一点。用PHP、python或您最喜欢的语言可能更容易

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');
这里是小提琴:

直接法(处理大写和小写):


不,但创建映射并不困难……您可能希望使用回调版本的
replace
,只需将字母传递给查找dict即可。如果您愿意,可以轻松地将其转换为函数。
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