正则表达式匹配前面的确切文本或没有

时间:2018-03-29 12:23:14

标签: java regex

我试图执行一个正则表达式,它会在域列表中搜索并检查提供的域是否是白名单

让我们说我的主要域名www.testDomain.com

我需要一个正则表达式来匹配所有子域名和不同的扩展名,我已经尝试过并且效果很好,这里是正则表达式:

"([a-z0-9]*.)([a-z0-9]*.)testDomain.(com|cn|local)"

但我有一个案例,其中我有以下域名

xxx.test-testDomain.com

我需要匹配确切的test-文字或什么都没有,因为我可能有一个domina xxx.anyString-testDomain.com,不允许通过 ,我已尝试过以下一个

([a-z0-9]*.)((?!.test-|(?!)))testDomain.(com|cn|local)

但是没有工作,有任何建议去做吗?

例:

http://abc.impersonate-testdomain.com -- shouldn't pass
http://testdomain.com -- ok
http://abc.testdomain.com -- ok
https://abc.testdomain.com -- ok
https://abc.test-testdomain.com -- ok
http://abc.testdomain.local:8081 -- ok

1 个答案:

答案 0 :(得分:2)

尝试以下正则表达式:

([a-z0-9]*\\.)?(test-)?testdomain.(com|cn|local)

enter image description here