精英盒子 -> 程序设计 -> 匹配域名列表的正则表达式 [打印本页]

jybox 2012-10-20 19:02

匹配域名列表的正则表达式


原则:

* 允许主机名、ip、域名
* 允许且仅允许开头加*.作为通配符

匹配通配符:

  *(\*\.)?
  
匹配第一个主机名,这也是唯一一个必须的部分,这样的设计保证了连字符前后必须有字母或数字

  [A-Za-z0-9]+(\-[A-Za-z0-9]+)*
  
匹配之后每个点和其后的主机名,可以有任意个

  (\.[A-Za-z0-9]+(\-[A-Za-z0-9]+)*)*
  
连起来:

  *(\*\.)?[A-Za-z0-9]+(\-[A-Za-z0-9]+)*(\.[A-Za-z0-9]+(\-[A-Za-z0-9]+)*)*
  
匹配以空格隔开的域名列表,设上面的正则为DOMAIN

  ^ *DOMAIN( DOMAIN) *$
  
展开,最终结果:
  
  ^ *(\*\.)?[A-Za-z0-9]+(\-[A-Za-z0-9]+)*(\.[A-Za-z0-9]+(\-[A-Za-z0-9]+)*)*( +*(\*\.)?[A-Za-z0-9]+(\-[A-Za-z0-9]+)*(\.[A-Za-z0-9]+(\-[A-Za-z0-9]+)*)*) *$

scxy 2012-10-21 10:27
= =正则就是乱极了




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.043912 second(s),query:5 Gzip enabled