Ale*_*der 2 javascript validation libphonenumber
我是javascript开发的新手.我需要的是验证手机号码,以便在一段时间后启用短信.
我发现的是googles 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;
};
Run Code Online (Sandbox Code Playgroud)
但我得到了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;
};
Run Code Online (Sandbox Code Playgroud)