我希望针对三星Knox防火墙验证通配符。请在下面查看所有域的完整条件:
用于阻止DNS解析的指定域名的URL列表。 URL的格式必须符合RFC的标准,并且还必须符合以下规则之一:
完整URL:“ www.google.com”
部分URL:“ android.com”; “ www.samsung ”; “ google ”。的 字符“ *”(通配符)必须位于开头和/或结尾 的网址,否则该网址无效。
特殊情况,匹配任何URL:“ *”
有效域
Knox认为以下示例有效。
无效的域
Knox认为以下示例无效。
有人能伸出援手吗?我正在努力满足这一要求的所有要求。
当前代码:
(?=^\*|.*\*$)^(?:\*\.?)?(?:(?:[a-z0-9-]+(?(?=\.)(?<!-)\.(?!-)))+[a-z]+)(?:\.?\*)?$
编辑:实际上,Java似乎甚至不支持条件正则表达式。
答案 0 :(得分:0)
如果您要预过滤域,则该域将匹配您所有的“有效”示例,并拒绝所有您的“无效”示例
^[\w*]([\w*-]+[\w*])?(\.[\w*]([\w*-]+[\w*])?)*$
如果您要测试的文件或回车分隔的字段中都有所有这些字段,则可能需要使用“多行”开关,如下所示:
(?m)^[\w*]([\w*-]+[\w*])?(\.[\w*]([\w*-]+[\w*])?)*$
由于您标记了Java,因此将其编码为如下所示的Java字符串:
"(?m)^[\\w*]([\\w*-]+[\\w*])?(\\.[\\w*]([\\w*-]+[\\w*])?)*$"
此表达式似乎有效:
^(\*|(\*|\*\.)?\w+(\.\w+)*(\.\*|\*)?)$
匹配/不匹配示例:
MATCHING NON-MATCHING
------------ ------------
* *test-
*.test.com *test.
*test.com *test.com-
*test *test-.com
*test* test*.com
test.* test.*com
test1.test.* -test.com