javascript - libphonenumber javascript - 验证

标签 javascript validation libphonenumber

我对 javascript 开发完全陌生。我需要的是验证手机号码以在一段时间后启用短信。

我发现的是谷歌libphonenumber:https://code.google.com/p/libphonenumber/

源主干中有一个已编译的 javascript 文件(closure-compiler),我想,我可以简单地执行以下操作:

function buildAndValidatePhone(phoneNumber, countryCode) {
    var strIntlNumber = "invalid";

    try {
        var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
        var regionCode = phoneUtil.getRegionCodeForCountryCode(countryCode);
        var number = phoneUtil.parseAndKeepRawInput(phoneNumber, regionCode);

        if (phoneUtil.isValidNumber(number)) {
            var PNT = i18n.phonenumbers.PhoneNumberType;
            var numberType = phoneUtil.getNumberType(number);

            if (numberType == PNT.MOBILE) {
                var PNF = i18n.phonenumbers.PhoneNumberFormat;
                strIntlNumber = phoneUtil.format(number, PNF.E164);
                strIntlNumber = strIntlNumber.replace('+','');
            }
        }
    }
    catch(ex) {
    console.log(ex);
    }

    return strIntlNumber;
};

但是我收到了 ReferenceError - 要么 i18n 未定义,要么 PhoneNumberUtil 未定义。 如何使用已编译的库? 我是否遗漏了某些内容或者我需要使用该库编译我的代码?

如果有任何帮助,我将不胜感激,提前致谢!

最佳答案

我成功了! 您需要使用闭包编译器 http://closure-compiler.appspot.com/ 用您的代码编译 libphonenumber 库。 :

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// @use_closure_library true
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonemetadata.pb.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonenumber.pb.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/metadatalite.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonenumberutil.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/asyoutypeformatter.js
// ==/ClosureCompiler==

function buildAndValidatePhone(phoneNumber, countryCode) {
var strIntlNumber = "invalid";

try {
    var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
    var regionCode = phoneUtil.getRegionCodeForCountryCode(countryCode);
    var number = phoneUtil.parseAndKeepRawInput(phoneNumber, regionCode);

    if (phoneUtil.isValidNumber(number)) {
        var PNT = i18n.phonenumbers.PhoneNumberType;
        var numberType = phoneUtil.getNumberType(number);

        if (numberType == PNT.MOBILE) {
            var PNF = i18n.phonenumbers.PhoneNumberFormat;
            strIntlNumber = phoneUtil.format(number, PNF.E164);
            strIntlNumber = strIntlNumber.replace('+','');
        }
    }
}
catch(ex) {
console.log(ex);
}

return strIntlNumber;
};

关于javascript - libphonenumber javascript - 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928116/

相关文章:

javascript - 表单提交时重新加载页面,getElementById 返回 null,表单不起作用

javascript - TypeScript:在没有显式返回类型的情况下,不会在 lambda 中检查多余的属性

javascript - AngularJS 表单验证始终为真

c# - 删除在数据库中存储为散列的组合框项目 C#

javascript - 向动态创建的复选框添加验证 jQuery

java - 使用 libphonenumber 确定国家运营商代码

java - icu4j 太大了,还有其他选择吗?

javascript - 使用 Web Audio API 的和弦检测算法

c# - 试图在种子方法的 SaveChanges 中找出我的验证错误

java - 自定义 Google 的 libPhoneNumber