Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonctionnement Regex et NSPredicate

    13 avril 2021 à 22:16:59

    Bonjour,

    Dans mon application iOS, je veux vérifier que l'adresse mail saisie par l'utilisateur est bien valide. J'ai trouvé le code suivant sur un forum :

    private static func ValidEmail(_ mail: String) -> Bool{
            let emailFormat = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
            let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailFormat)
            return emailPredicate.evaluate(with: mail)
        }

    J'ai quelques questions dessus.

    Tout d'abord je ne comprend pas la principe de la classe NSPredicate. On ne pourrait pas simplement faire une fonction matchRegex(regex,StringAComparer) ? 

    Pareil pour les arguments de l'initialiseur, je ne vois pas à quoi sert l'argument format et la valeur qu'on lui associe "SELF MATCHES %@", de ce que j'ai vu le "%@" va être remplacer par emailFormat mais quel est l'utilité de cet argument ? Pourquoi ne pas passer emailFormat seulement ?

    Merci de votre temps :)

    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2021 à 9:15:24

      Salut, je suis pas sûr que NSPredicate soit avisé dans ce use case. 

      https://nshipster.com/swift-regular-expressions/

      • Partager sur Facebook
      • Partager sur Twitter
        14 avril 2021 à 18:13:15

        D'accord merci j'ai remplacé par le code suivant : 

        private static func validEmail(_ mail: String) -> Bool{
                let mailFormat = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
        //mailToCheck est une propriété de la classe
                return mailToCheck.range(of: mailFormat, options: .regularExpression) != nil
            }
        • Partager sur Facebook
        • Partager sur Twitter

        Fonctionnement Regex et NSPredicate

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown