0
votes

Expression régulière pour correspondre à l'environnement

J'utilise JavaScript et je cherche une regex pour correspondre à l'espace réservé "Environnement", qui sera une valeur différente comme "production" ou "développement" dans "réel" chaînes.

La regex devrait Correspondre à "Environnement" dans les deux chaînes: P>

https://company-application-environment.company.local
https://application-environment.company.local
  • [^ -] + code> qui correspond environnement.company.local code> li>
  • \. [^ -] + code> qui correspond .company.local code> li> ul>

    Comment puis-je obtenir de l'environnement? P> P>


1 commentaires

Comment obtenir la production comme valeur dans une "vraie" chaîne?


4 Réponses :


2
votes

Vous pouvez utiliser cette regex basée sur un lookahead positif: xxx pré>

Détails: strong> p>

  • [^. .-] + code>: Match 1+ de tout type qui n'est pas - code> et . code> li> li>
  • (? = \ \ ul>

    Démo Regex P>

    Code : strong> p>

    p>

    const urls = [
      "https://company-application-environment.company.local", 
      "https://application-environment.company.local",
      "https://application-production.any.thing",
      "https://foo-bar-baz-development.any.thing"
    ]
    
    const regex = /[^.-]+(?=\.[^-]+$)/;
    
    urls.forEach(url =>
      console.log(url.match(regex)[0])
    )


3 commentaires

Belle réponse, mais comme Epascarello incluait également un exemple que je choisis celui-ci comme réponse. J'étais un peu perdu avec "Grub Capturé Group # 1". Il n'y a aucun moyen d'éviter de faire [1] pour obtenir le résultat?


Ok, je vais poster une réponse qui ne dépend pas du groupe de capture.


Très appréciée!



1
votes

pas le plus grand député, mais obtient le travail effectué.

p>

const urls = [
  "https://company-application-environment.company.local", 
  "https://application-environment.company.local", 
  "https://a-b-c-d-e-f.foo.bar"
]

urls.forEach(url =>
  console.log(url.match(/-([^-.]+)\./)[1])
)


0 commentaires

0
votes

Match pour les environnements connus

P>

(production|development)


3 commentaires

Utilisation de l'application mobile et était au milieu de la révision lorsque vous l'avez vu. La réponse de base reste la même.


Quelle sera la valeur de l'environnement, n'est pas connue. Cependant, si je parviens à répertorier toutes les combinaisons possibles, cela pourrait être utile. Avec un exemple supplémentaire pour aborder spécialement la question que cela aurait pu être une meilleure réponse.


Oui, je sens que ce format est plus lisible. J'ai oublié d'utiliser () au lieu de []. Enfin au bureau pour ajouter un extrait à démontrer.



0
votes

Autre alternative, vous pouvez utiliser URL , Split Sur - code> et obtenez le dernier élément de la matrice. Puis divisez sur un point et obtenez le premier élément.

p>

[
  "https://company-application-environment.company.local",
  "https://application-environment.company.local"
].forEach(s => {
  let env = new URL(s).host.split('-').pop().split('.')[0];
  console.log(env);
})


1 commentaires

Je souhaite également soutenir d'autres cas d'utilisation, ce qui vous oblige à utiliser Regex. La programmation Chaque cas d'utilisation n'est qu'une option. Solution propre cependant.