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>
4 Réponses :
Vous pouvez utiliser cette regex basée sur un lookahead positif: Détails: strong> p> Démo Regex P> Code : strong> p> p>
[^. .-] + code>: Match 1+ de tout type qui n'est pas - code> et . code> li> li>
(? = \ \
ul> 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])
)
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!
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]) )
P>
(production|development)
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.
Autre alternative, vous pouvez utiliser URL , Split Sur p> - code> et obtenez le dernier élément de la matrice. Puis divisez sur un point et obtenez le premier élément. [
"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);
})
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.
Comment obtenir la production comme valeur dans une "vraie" chaîne?