web-dev-qa-db-fra.com

Échapper à Regex pour obtenir un JSON valide

Dans mon schéma, je veux reconnaître certains modèles pour restreindre le type de données qu'un utilisateur peut entrer. J'utilise l'expression régulière pour restreindre ce qu'un utilisateur peut entrer, mais l'expression régulière est signalée lorsque j'essaie de valider le JSON à l'aide d'un validateur en ligne comme celui-ci n .

Existe-t-il un moyen pour que le validateur ignore les caractères spéciaux regex qui ne sont pas d'accord avec lui, mais conservent toujours l'expression régulière?

La chose étrange est que le validateur ne se déclenche que sur certains cas. Par exemple, il marque la deuxième et non la première instance de regex bien qu'elles soient identiques ici:

            "institutionname": {
                "type": "string",
                "description": "institution name",
                "label": "name",
                "input-type": "text",
                "pattern": "^[A-Za-z0-9\s]+$"
            },
            "bio": {
                "type": "string",
                "label": "bio",
                "input-type": "text",
                "pattern": "^[A-Za-z0-9\s]+$",
                "help-box": "tell us about yourself"
            },
27
goldisfine

Ce ne sont que les barres obliques qui gâchent la validation, vous pouvez les encoder en utilisant %5C qui est l'encodage hexadécimal de \ ou ce que Mike W dit que vous pourriez doubler comme \\ et ensuite vous pouvez simplement les décoder quand vous voulez les utiliser

29
Legion

La réponse acceptée ne fonctionne pas pour moi. %5C Ne fonctionne pas bien avec un linter. De plus, le faire manuellement est un travail. Que diriez-vous d'une très longue expression régulière -

^(([^<>()[\\]\\.,;:\\s@\"]+(\\.[^<>()[\]\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$

Alors, s'il vous plaît, ne vous tuez pas et dirigez-vous vers cela. - https://www.freeformatter.com/json-escape.html#ad-output

Si le lien ne fonctionne plus à l'avenir, veuillez trouver un autre outil en ligne :)

0
kushalvm