Comment vérifier si une variable contient un identifiant UUID/GUID valide ?
Je ne suis actuellement intéressé que par la validation des types 1 et 4, mais ce n'est pas une limite pour votre réponse.
Comment vérifier si une variable contient un identifiant UUID/GUID valide ?
Je ne suis actuellement intéressé que par la validation des types 1 et 4, mais ce n'est pas une limite pour votre réponse.
Actuellement, les UUID sont spécifiés dans la RFC4122.
Donc pour valider un UUID...
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
...s'assure que vous disposez d'un UUID formaté de manière canonique, de la version 1 à 5 et de la variante appropriée conformément à la RFC4122.
NOTE : Les accolades "{" et "}" ne sont pas canoniques. Elles sont un artefact de certains systèmes et usages.
Il est facile de modifier la regex ci-dessus pour répondre aux exigences de la question originale.
ASTUCE : groupe regex/captures
Je pense que [1-5][0-9a-f]{3} est incorrect. J'ai un UUID valide qui a "b06a" dans cette partie, et cela a échoué pour moi.
@FelipeBrahm, [1-5] est correct selon la RFC, que 4 bits indiquent la version, et il y a seulement 5 versions.
Si vous voulez vérifier ou valider une version spécifique de l'UUID, voici les regex correspondants.
Notez que la seule différence est le numéro de version qui est expliqué dans
4.1.3. Version
chapitre de UUID 4122 RFC .
Le numéro de version est le premier caractère du troisième groupe : [VERSION_NUMBER][0-9A-F]{3}
:
UUID v1 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[1][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v2 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[2][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v3 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[3][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v4 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v5 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[5][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
Ou si vous avez des parenthèses : /^\{?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\}?$/.test('01234567-9ABC-DEF0-1234-56789ABCDEF0');
Ce n'est pas tout à fait correct. Il manque que [1-5] (version) commence le 3ème bloc et que [89AB] (variante) commence le 4ème bloc. La réponse de Gambol fait bien les choses.
Si vous utilisez Node.js pour le développement, il est recommandé d'utiliser un paquet appelé Validator. Il comprend toutes les expressions rationnelles nécessaires pour valider les différentes versions d'UUID, ainsi que diverses autres fonctions de validation.
Voici le lien npm : Validateur
var a = 'd3aa88e2-c754-41e0-8ba6-4198a34aa0a2'
v.isUUID(a)
true
v.isUUID('abc')
false
v.isNull(a)
false
Intéressant, mais on dirait qu'il s'attend à des traits d'union ? Voici les quatre regex qu'il utilise actuellement -- /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i
et/ou /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
et/ou /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
et/ou /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i
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.
0 votes
Au format chaîne, pas hex, pas bin, ou je ne sais pas ce que vous demandez
0 votes
^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$
0 votes
Si vous ne parvenez pas à exclure les variables contenant une chaîne de 32 chiffres hexadécimaux consécutifs (sans regroupement), consultez le site suivant ma réponse
0 votes
Ça pourrait être utile : npmjs.com/package/uuid-validate