J'aimerais avoir une expression régulière qui correspond aux domaines suivants:

  • dev.api.company.com
  • live.api.company.com
  • test1.dev-api.company.com
  • test2.live-api.company.com
  • yyy.XXXapi.company.com

Mais ne correspond pas aux éléments suivants:

  • dev-api.company.com
  • live-api.company.com
  • api.company.com
  • XXXapi.company.com

J'ai essayé ceci: ^ [a-z] +. [A-z -] * api.company.com $ mais cela ne fonctionne pas, et je ne peux pas le faire fonctionner. Pouvez-vous m'aider s'il vous plaît?

J'utilise la fonction javascript String.match ().

2
Rajaswami 7 mars 2016 à 16:49

3 réponses

Meilleure réponse

Essayez l'expression régulière suivante:

^[a-zA-Z0-9]+\.[^\.]*api\.company\.com$

Démo

3
razzak 7 mars 2016 à 14:06

Considérer ce qui suit:

if (string.matches("^(dev\\.api|live\\.api|test\\d+)\\..*$")) {
    // Accepted subdomain
} else {
    // Nope
}

Vous pouvez saisir autant d'options que vous le souhaitez, en les séparant par |

Rupture de l'expression régulière:

^ - commence par

(option1 | option2 | option3) - une liste des sous-domaines acceptés

\. - un sous-domaine doit être suivi d'un point

. * $ autre chose jusqu'à la fin de la chaîne

Cette solution vous permet d'administrer facilement les sous-domaines acceptés si vous n'avez pas de règle générale de sélection.

1
Adrian B. 7 mars 2016 à 14:01

Essaye ça:

/^[a-z\\.\\-]{0,}api.company.com$/

Tests contre vos exemples et ça marche.

0
twernt 7 mars 2016 à 15:32