J'essaie de valider une chaîne, qui devrait contenir des lettres, des chiffres et des caractères spéciaux &-._
uniquement. Pour cela j'ai essayé avec une expression régulière.
var pattern = /[a-zA-Z0-9&_\.-]/
var qry = 'abc&*';
if(qry.match(pattern)) {
alert('valid');
}
else{
alert('invalid');
}
Lors de l'utilisation du code ci-dessus, la chaîne abc&*
est valide. Mais mon exigence est de montrer cette invalide. C'est-à-dire que lorsqu'un caractère autre qu'une lettre, un nombre ou des caractères spéciaux &-._
vient, la chaîne doit être considérée comme non valide. Comment puis-je faire cela avec une regex?
Ajoutez-les aux caractères autorisés, mais vous devrez en échapper certains, tels que -]/\
var pattern = /^[a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*$/
De cette façon, vous pouvez supprimer tout caractère individuel que vous souhaitez interdire.
En outre, vous souhaitez inclure les repères de début et de fin de chaîne ^ et $
Mettre à jour:
Comme l’ont compris ses amis (et le reste d’entre nous, au début), les seuls caractères spéciaux devant être autorisés dans le modèle sont & -._
/^[\w&.\-]+$/
[\ w] est identique à [a-zA-Z0-9_]
Bien que le tiret n'ait pas besoin d'être échappé au début ou à la fin de la liste, je préfère le faire au cas où d'autres caractères seraient ajoutés. De plus, le + signifie que vous avez besoin d'au moins un des caractères listés. Si zéro est ok (c.-à-d. Une valeur vide), remplacez-le par un * à la place:
/^[\w&.\-]*$/
Eh bien, pourquoi ne pas simplement les ajouter à votre classe de personnage existante?
var pattern = /[a-zA-Z0-9&._-]/
Si vous avez besoin de vérifier si une chaîne ne contient que ces caractères, vous devez également anchor l'expression:
var pattern = /^[a-zA-Z0-9&._-]+$/
Les ^
et $
ajoutés correspondent respectivement au début et à la fin de la chaîne.
Le test pour les lettres, les chiffres ou le trait de soulignement peut être fait avec \w
qui raccourcit votre expression:
var pattern = /^[\w&.-]+$/
Comme mentionné dans le commentaire de Nathan, si vous n'utilisez pas les résultats de .match()
(il retourne un tableau avec ce qui a été mis en correspondance), il est préférable d'utiliser RegExp.test()
qui renvoie un simple booléen:
if (pattern.test(qry)) {
// qry is non-empty and only contains letters, numbers or special characters.
}
Mise à jour 2
Si j'ai mal compris la question, le ci-dessous vérifiera si les trois conditions distinctes sont remplies.
if (/[a-zA-Z]/.test(qry) && /[0-9]/.test(qry) && /[&._-]/.test(qry)) {
// qry contains at least one letter, one number and one special character
}
Essayez cette regex:
/^[\w&.-]+$/
Aussi, vous pouvez utiliser test
.
if ( pattern.test( qry ) ) {
// valid
}
let pattern = /^(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9!@#$%^&*]{6,16}$/;
//following will give you the result as true(if the password contains Capital, small letter, number and special character) or false based on the string format
let reee =pattern .test("helLo123@"); //true as it contains all the above
Essayez ce RegEx: faire correspondre les caractères spéciaux que nous utilisons dans les paragraphes et les alphabets
Javascript : /^[a-zA-Z]+(([\'\,\.\-_ \/)(:][a-zA-Z_ ])?[a-zA-Z_ .]*)*$/.test(str)
.test(str) returns boolean value if matched true and not matched false
c# : ^[a-zA-Z]+(([\'\,\.\-_ \/)(:][a-zA-Z_ ])?[a-zA-Z_ .]*)*$