2017-07-20 2 views
0

Une chaîne comme ceci correspondrait à:Création d'un modèle regex pour correspondre à motif "string/UUID"

"test/00b46e01-3994-4ac2-939e-2d5052a65961" 

Ou comme ce

"anotherword/58628d3f-becf-4f54-bdea-336ca9247145" 

Le regex pour UUID (v4) J'est "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" pour mon schéma JSON (c'est-à-dire que mon objet JSON contient une propriété uuid), mais maintenant je veux aussi incorporer le 'string /' devant ce pattern.

+1

Essayez d'ajouter '[a-zA-Z] + /' après '^' si vous voulez faire correspondre des lettres ASCII suivies de '/'. –

+1

Ou ajoutez simplement (après '^') '[^ /] + /' pour faire correspondre des caractères 1+ autres que '/' et ensuite '/'. –

+0

Génial! Vous pouvez ajouter cela comme réponse si vous le souhaitez. – Attila

Répondre

1

Vous pouvez utiliser un negated character class comme [^/]+ pour correspondre à 1 ou plusieurs caractères autres que / et / au début du motif après ^:

"^[^/]+/[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" 
    ^^^^^^ 

Voir la regex demo.

Si vous voulez aussi correspondre à une chaîne qui n'a pas avant / caractères, remplacer le + quantificateurs (qui correspond à 1 ou plusieurs occurrences) avec * (0 ou plusieurs occurrences).