J'utilise Oracle 11g, et en essayant de créer une table définir des contraintes sur la création.Oracle 11g - Vérifier la contrainte avec RegEx
Je tentais d'ajouter contrainte de vérification pour valider certaines informations (telles que l'adresse e-mail, numéro de téléphone, etc ...)
Y at-il quelque chose dans Oracle 11g qui me permettrait de faire quelque chose comme ça?
constraint CK_CONSTRAINT_NAME check (EMAIL like 'REGEX')
Le regex que je voulais utiliser (de regexLib attrapé) est:
^[a-zA-Z][a-zA-Z0-9_\.\-][email protected]([a-zA-Z0-9-]{2,}\.)+([a-zA-Z]{2,4}|[a-zA-Z]{2}\.[a-zA-Z]{2})$
Je pense que Oracle 11g (corrigez-moi si je me trompe) ne prend pas en charge ce format pour RegEx ..
J'ai vu des méthodes utilisant REGEX_LIKE, mais il semble ne fonctionner que dans les clauses WHERE
. Je voudrais le garder comme une contrainte de vérification et non comme un déclencheur ou une fonction/script externe.
En outre, j'ai lu dans d'autres threads ici, quelqu'un disant RegEx 'ne sont pas un bon moyen de vérifier le format de l'adresse e-mail et de telles informations. Aucune raison n'a été donnée dans le commentaire, et j'aimerais savoir pourquoi, s'il y a une raison!
Ce regex devrait être sorti et tiré. J'espère que ce n'est pas vraiment comme ça sur RegexLib. "' 'alum'"? Des quantificateurs inutiles? Ponctuation manquante? En dehors de cela, regex n'est pas bon pour la validation des adresses e-mail car le format est trop variable pour une regex fiable (vous perdrez toujours les mails valides et accepterez les mails invalides). Le mieux que vous puissiez faire est de vérifier la présence d'un signe '@' et d'essayer de lui envoyer un message de confirmation. Si cela réussit, et si vous recevez un mail de retour, vous savez que l'adresse est valide et active. –
@TimPietzcker Désolé, j'ai changé le regEx pour le vrai, c'était une sorte de mash up de l'original et quelque chose que j'ai essayé à partir de la documentation Oracle. – Pacane