javascript - noconflict - jquery para validar el número de teléfono
jquery.noconflict() example (9)
Este es un trabajo para mí:
/^/(?(/d{3})/)?[-/. ]?(/d{3})[-/. ]?(/d{4})$/
Quiero validar números de teléfono como (123) 456-7890 o 1234567890 ¿Cómo se debe escribir la condición de ''coincidencias'' en el siguiente código?
form.validate({
rules: {
phoneNumber: {matches:"[0-9]+",minlength:10, maxlength:10}
Sé que este es un post antiguo, pero pensé que compartiría mi solución para ayudar a otros.
Esta función funcionará si desea validar el número de teléfono de 10 dígitos "Número de EE. UU."
function getValidNumber(value)
{
value = $.trim(value).replace(//D/g, '''');
if (value.substring(0, 1) == ''1'') {
value = value.substring(1);
}
if (value.length == 10) {
return value;
}
return false;
}
Aquí cómo utilizar este método.
var num = getValidNumber(''(123) 456-7890'');
if(num !== false){
alert(''The valid number is: '' + num);
} else {
alert(''The number you passed is not a valid US phone number'');
}
Sabe que hay muchos formatos de números de teléfono en este mundo, por lo que puede usar esta expresión regular para validar cualquier número de teléfono
Si primero normaliza sus datos, puede evitar todas las expresiones regulares muy complejas que se requieren para validar los números de teléfono. Desde mi experiencia, los patrones de expresiones regulares complicados pueden tener dos efectos secundarios no deseados: (1) pueden tener un comportamiento inesperado que sería un dolor depurar más tarde, y (2) pueden ser más lentos que los patrones de expresiones regulares más simples, que pueden llegar a ser perceptibles cuando están ejecutando expresiones regulares en un bucle.
Al mantener sus expresiones regulares lo más simples posible, reduce estos riesgos y su código será más fácil de seguir para los demás, en parte porque será más predecible. Para usar el ejemplo de su número de teléfono, primero podemos normalizar el valor eliminando todos los no dígitos como este:
value = $.trim(value).replace(//D/g, '''');
Ahora su patrón de expresiones regulares para un número de teléfono de EE. UU. (O cualquier otra configuración regional) puede ser mucho más simple:
/^1?/d{10}$/
La expresión regular no solo es mucho más simple, sino que también es más fácil de seguir lo que está sucediendo: un valor opcionalmente líder con el número uno (código de país de EE. UU.) Seguido de diez dígitos. Si desea formatear el valor validado para que se vea bonito, puede usar este patrón de expresiones regulares un poco más largo:
/^1?(/d{3})(/d{3})(/d{4})$/
Esto significa un número uno de líder opcional seguido de tres dígitos, otros tres dígitos y terminando con cuatro dígitos. Con cada grupo de números memorizados, puede emitirlo de la forma que desee. Aquí hay un codepen que usa jQuery Validation para ilustrar esto para dos locales (Singapur y Estados Unidos):
Tu codigo:
rules: {
phoneNumber: {
matches: "[0-9]+", // <-- no such method called "matches"!
minlength:10,
maxlength:10
}
}
No existe tal función de devolución de llamada, opción, método o regla llamada matches
ningún lugar dentro del complemento jQuery Validate . ( EDITAR: OP no mencionó que las matches
es su método personalizado ) .
Sin embargo, dentro del archivo additional-methods.js
, hay varios métodos de validación de números de teléfono que puede utilizar. El llamado phoneUS
debería satisfacer tu patrón. Dado que la regla ya valida la longitud, minlength
y maxlength
son innecesariamente innecesarios. También es mucho más completo porque los códigos de área y los prefijos no pueden comenzar con un 1
.
rules: {
phoneNumber: {
phoneUS: true
}
}
DEMO: http://jsfiddle.net/eWhkv/
Si, por alguna razón, solo necesita la expresión regular para usarla en otro método, puede tomarla desde aquí ...
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
phone_number = phone_number.replace(//s+/g, "");
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^(/+?1-?)?(/([2-9]/d{2}/)|[2-9]/d{2})-?[2-9]/d{2}-?/d{4}$/);
}, "Please specify a valid phone number");
Tu expresión regular debería ser algo como
[0-9/-/(/)/s]+
.
Coincide con los números, guiones, paréntesis y espacio.
Si necesitas algo más estricto, que coincida con tu ejemplo, prueba esto:
([0-9]{10})|(/([0-9]{3}/)/s+[0-9]{3}/-[0-9]{4})
function validatePhone(txtPhone) {
var a = document.getElementById(txtPhone).value;
var filter = /^((/+[1-9]{1,4}[ /-]*)|(/([0-9]{2,3}/)[ /-]*)|([0-9]{2,4})[ /-]*)*?[0-9]{3,4}?[ /-]*[0-9]{3,4}?$/;
if (filter.test(a)) {
return true;
}
else {
return false;
}
}
Demostración http://jsfiddle.net/dishantd/JLJMW/496/
jQuery.validator.methods.matches = function( value, element, params ) {
var re = new RegExp(params);
// window.console.log(re);
// window.console.log(value);
// window.console.log(re.test( value ));
return this.optional( element ) || re.test( value );
}
rules: {
input_telf: {
required : true,
matches : "^(//d|//s)+$",
minlength : 10,
maxlength : 20
}
}
//(?([0-9]{3})/)?([ .-]?)([0-9]{3})/2([0-9]{4})/
Soporta:
- (123) 456 7899
- (123) .456.7899
- (123) -456-7899
- 123-456-7899
- 123 456 7899
- 1234567899