API子域的正则表达式

时间:2016-03-07 13:49:58

标签: javascript regex

我想要一个与以下域名匹配的正则表达式:

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

但与以下内容不符:

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

我试过这个:^ [a-z] +。[a-z - ] * api.company.com $但它无法正常工作,我无法使其正常工作。你能帮帮我吗?

我正在使用javascript String.match()函数。

3 个答案:

答案 0 :(得分:3)

尝试以下正则表达式:

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

<强> Demo

答案 1 :(得分:1)

请考虑以下事项:

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

您可以根据需要输入任意数量的选项,并将其与|

分开

正则表达式的分解:

^ - 以

开头

(option1 | option2 | option3) - 已接受子域名列表

\。 - 子域必须后跟句点

。* $除了字符串

之外的任何其他内容

如果您没有一般的经验法则可供选择,此解决方案允许您轻松管理接受的子域名。

答案 2 :(得分:0)

试试这个:

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

针对您的示例进行测试,它可以正常运行。