30 votes

RegEx pour inclure les caractères alphanumériques et spéciaux

J'ai l'obligation d'autoriser les caractères alphanumériques et certains autres caractères pour un champ. J'utilise cette expression régulière :

 "^[a-zA-Z0-9!@#$&()-`.+,/\"]*$".

Les caractères spéciaux autorisés sont ! @ # $ & ( ) - ‘ . / + , “

Mais lorsque je teste le motif avec une chaîne "test_for_extended_alphanumeric", la chaîne passe le test. Je n'ai pas de "_" autorisés dans le modèle. Qu'est-ce que je fais de mal ?

0voto

Hyonsoo Han Points 21

Comme je ne sais pas combien de caractères spéciaux existent, il est difficile de vérifier que la chaîne contient un caractère spécial par liste blanche. Il peut être plus efficace de vérifier que la chaîne ne contient que des alphabets ou des chiffres.

pour l'exemple kotlin

fun String.hasOnlyAlphabetOrNumber(): Boolean {
    val p = Pattern.compile("[^a-zA-Z0-9]")
    return !(p.matcher(this).matches())
}

pour swift4

func hasOnlyAlphabetOrNumber() -> Bool {
    if self.isEmpty { return false }
    do {
        let pattern = "[^a-zA-Z0-9]"
        let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
        return regex.matches(in: self, options: [], range: NSRange(location: 0, length: self.count)).count == 0
    } catch {
        return false
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X