Je souhaite valider des numéros de téléphone tels que (123) 456-7890 ou 1234567890 Comment devrait être la condition de 'correspondances' être écrite dans le code suivant?
form.validate({
rules: {
phoneNumber: {matches:"[0-9]+",minlength:10, maxlength:10}
Votre regex devrait être quelque chose comme
[0-9\-\(\)\s]+
.
Il fait correspondre les chiffres, les tirets, les parenthèses et les espaces.
Si vous avez besoin de quelque chose de plus strict, correspondant à votre exemple, essayez ceci:
([0-9]{10})|(\([0-9]{3}\)\s+[0-9]{3}\-[0-9]{4})
Votre code:
rules: {
phoneNumber: {
matches: "[0-9]+", // <-- no such method called "matches"!
minlength:10,
maxlength:10
}
}
Il n'existe aucune fonction, option, méthode ou règle de rappel appelée matches
dans le répertoire du plug-in jQuery Validate . (EDIT: OP n'a pas mentionné que matches
est sa méthode personnalisée.)
Toutefois, dans le fichier additional-methods.js
, vous pouvez utiliser plusieurs méthodes de validation du numéro de téléphone. Celui appelé phoneUS
devrait satisfaire votre modèle. Étant donné que la règle valide déjà la longueur, minlength
et maxlength
sont superflus. C'est aussi beaucoup plus complet en ce que les indicatifs régionaux et les préfixes ne peuvent pas commencer par un 1
.
rules: {
phoneNumber: {
phoneUS: true
}
}
DEMO: http://jsfiddle.net/eWhkv/
Si, pour une raison quelconque, vous avez simplement besoin de la regex pour l'utiliser avec une autre méthode, vous pouvez la prendre à partir d'ici ...
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");
/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
Les soutiens :
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;
}
}
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
}
}
Je sais que ceci est un ancien post, mais je pensais partager ma solution pour aider les autres.
Cette fonction fonctionnera si vous souhaitez valider un numéro de téléphone à 10 chiffres "Numéro américain".
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;
}
Voici comment utiliser cette méthode
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');
}
Celui-ci est un travail pour moi: -
/^\(?(\d{3})\)?[-\. ]?(\d{3})[-\. ]?(\d{4})$/