正则表达式包括所有特定模式并且仅排除一个案例

时间:2013-07-26 18:09:19

标签: javascript regex

我正在努力排除某些网址。

我希望所有具有/google.com/模式的网址,/login.google.com/

除外

所以:

  • account.google.com应该通过
  • google.com应该通过
  • google.com/abc应该通过
  • http://google.com应该通过
  • login.google.com 传递

我正在尝试的代码是

/^(?!login\.)google\.com/
/^(login)google\.com/

但两者都没有效果。我错过了什么吗?

3 个答案:

答案 0 :(得分:5)

假设您尝试匹配除google.com之外的任何login.地址,您需要在.*之前添加google,即< / p>

/^(https?:\/\/)?(?!login\.)([\w-]+\.)?google\.com/

更新:根据有用的评论进行修改。不确定有效的域名字符类是什么 - 猜测它是[\w-]。如果你想玩它,请参见http://rubular.com/

答案 1 :(得分:3)

这个正则表达式适合你:

^(?:https?://)?(?!login\.)(?:.+?\.)?google\.com(?:/.*|)$

现场演示:http://www.rubular.com/r/z69WSKV9cM

Javascript语法:

/^(?:https?:\/\/)?(?!login\.)(?:.+?\.)?google\.com(?:\/.*|)$/

答案 2 :(得分:-1)

尝试此模式以匹配问题中列出的数据:

/^(account\.)?google\.com/