正则表达式:仅排除范围的一个URL

时间:2016-02-29 10:57:11

标签: regex

我必须屏蔽所有网址*.company.com,但可以访问proxy.company.com。我怎么能用正则表达式做到这一点?

[^proxy].company.com不起作用,我不知道为什么。

感谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

^(?:(?!proxy)[a-z0-9-\.]+)\.company\.com

您的[^proxy]是一个字符集,匹配任何不在该组中的字符。 http://www.regular-expressions.info/charclass.html

答案 1 :(得分:0)

您可以使用Negative Lookahead

尝试^(?!proxy)[^.]+\.company\.com$

demo

Java示例:

    String regex = "^(?!proxy)[^.]+\\.company\\.com$";

    System.out.println("abc.company.com".matches(regex)); // true
    System.out.println("xyz.company.com".matches(regex)); // true
    System.out.println("proxy.company.com".matches(regex)); // false

正则表达式解释:

  ^                        the beginning of the string
  (?!                      look ahead to see if there is not:
    proxy                    'proxy'
  )                        end of look-ahead
  [^.]+                    any character except: '.' (1 or more times
                           (matching the most amount possible))

  \.                       '.'
  company                  'company'
  \.                       '.'
  com                      'com'
  $                        before an optional \n, and the end of the string