Estoy perplejo.
He estado jugando con esto por un tiempo y no tiene sentido.
libphonenumber-js no valida un número de teléfono que debería ser un número válido. Devuelve 'falso' cada vez.
Esto parece bastante simple y directo. Un número de 10 dígitos de un campo de formulario.
const phoneNumber = libphonenumber.parsePhoneNumber(contact_asset, 'US') if (phoneNumber) { console.log(libphonenumber.isPossiblePhoneNumber(JSON.stringify(phoneNumber))); console.log(phoneNumber.formatNational()); }Lo que me parece extraño es que cuando analizo el número de teléfono y lo paso al validador, si no es una cadena, se queja. Esperaría que libphonenumber aceptara la salida de parse sin especificarla.
¿Qué me estoy perdiendo?
Si lo formateo a internacional y luego verifico si es válido, me está devolviendo un número válido, verifique si esto ayuda.
let contact_asset = "2022032034" const phoneNumber = libphonenumber.parsePhoneNumber(contact_asset, 'US') const formattedPhoneNumber = phoneNumber.formatInternational() if (phoneNumber) { console.log(libphonenumber.isValidPhoneNumber(formattedPhoneNumber)); console.log(libphonenumber.isPossiblePhoneNumber(formattedPhoneNumber)); console.log(phoneNumber.formatNational()); }Siempre debes echar un vistazo a la documentación .
parsePhoneNumber devuelve …an instance of PhoneNumber class, or undefined if no phone number could be parsed… . Y no puede esperar que JSON.stringify(phoneNumber) resulte en algo que solo contenga un número de teléfono.
Y isPossiblePhoneNumber espera una cadena como parámetro que es un número de teléfono válido; la documentación dice allí:
Esta función es solo un atajo para un proceso de dos pasos de analizar "estrictamente" un número de teléfono y luego llamar a
.isPossible().
Entonces, lo que quieres hacer es:
const contact_asset = "2022032034" const phoneNumber = libphonenumber.parsePhoneNumber(contact_asset, 'US') if (phoneNumber) { console.log(phoneNumber.isPossible()); }O
const contact_asset = "2022032034" console.log(libphonenumber.isPossiblePhoneNumber(contact_asset, 'US'));