Oracle 11g - Vérification de la contrainte avec la RegEx

Je suis à l'aide d'Oracle 11g, et en essayant de créer une table de définir des contraintes sur la création.

J'ai essayé d'ajouter la contrainte de vérification afin de valider certaines informations (comme l'e-mail, numéro de téléphone, etc...)

Est-il quelque chose dans Oracle 11g qui me permettrait de faire quelque chose comme cela?

constraint CK_CONSTRAINT_NAME check (EMAIL like 'REGEX')

La regEx que je voulais utiliser (extrait d'regexLib) est:

^[a-zA-Z][a-zA-Z0-9_\.\-]+@([a-zA-Z0-9-]{2,}\.)+([a-zA-Z]{2,4}|[a-zA-Z]{2}\.[a-zA-Z]{2})$

Je pense Oracle 11g (corrigez-moi si je me trompe) ne prend pas en charge ce format pour les RegEx...

J'ai vu des méthodes à l'aide de REGEX_LIKE, mais il semble être la seule à travailler dans WHERE clauses.

J'aimerais le garder comme une contrainte de vérification et pas un déclencheur ou une fonction externe/script.

Aussi, j'ai lu dans d'autres threads ici, quelqu'un qui me dit RegEx " ne sont pas un bon moyen de vérifier l'adresse e-mail de format et de telles informations. Aucune raison n'a été donnée dans le commentaire, et j'aimerais savoir pourquoi, si une raison quelconque, il n'est!

Que regex doit être pris et fusillés. J'espère que c'est pas vraiment comme ça sur RegexLib. "alum"? Inutile de quantificateurs? Absence de ponctuation? A côté de cela, la regex n'est pas bon pour la validation des adresses e-mail parce que le format est trop variable pour une fiable regex (vous aurez toujours miss valide mails et accepter des invalides). Le meilleur que vous pouvez faire est de vérifier la présence d'un @ signe, et essayez d'envoyer un e-mail de confirmation. Si cela réussit, et si vous obtenez un retour de courrier, vous connaissez l'adresse est valide et actif.
Désolé, j'ai changé les regEx pour le réel, C'était une sorte de mash up de l'original et quelque chose que j'ai essayé à partir de la documentation d'Oracle.

OriginalL'auteur Pacane | 2011-10-01