Java 正则表达式与前面的精确文本匹配或不匹配

Java 正则表达式与前面的精确文本匹配或不匹配,java,regex,Java,Regex,我正在尝试执行一个正则表达式,它将在域列表中搜索,并检查提供的域是否为白名单 比如说我的主域名www.testDomain.com 我需要一个正则表达式来匹配所有子域和不同的扩展,我已经尝试过了,效果很好,下面是正则表达式: "([a-z0-9]*.)([a-z0-9]*.)testDomain.(com|cn|local)" 但我有一个案例,我有以下领域 xxx.test-testDomain.com 我需要匹配准确的test-文本,或者什么都不匹配,因为我可能有一个dominaxxx.a

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

比如说我的主域名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
请尝试以下正则表达式:

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

\\w+\\.测试-\\w*.
就可以了,不过再举几个例子就可以得到更方便的结果。
xxx.test-test1Domain.com是否应该通过?或者关于
xxx.test noTestDomain.com
?首先,您需要转义
,否则它将匹配正则表达式中的任何字符。我已经添加了一组测试用例,第一个不应该pass@Thefourthbird不工作,如屏幕截图所示,第一个不完全匹配或者如果您想确保只有完整的url匹配或者根本不匹配,您可以添加开始-结束标识符:^([a-z0-9]*\)?(测试-)?testdomain.(com | cn | local)$Yes在对点进行es封顶后这起作用([a-z0-9]*\)?(测试-)?testdomain.(com | cn | local)@M1M6是的,这是堆栈文本框的一些问题。我不得不添加两个斜杠(\\.)来添加一个(\.):)但是,是的,截图中提供的那个很好用