日期:2014-05-16  浏览次数:20421 次

关于二级域名的正则分析
同时匹配*.xxx.com和xxx.com,分组成两组,第一个组是*.的内容,第二组是xxx.com   这样的正则如何写??请教  

我现在是([^\.]*[\.]?)(.+),但是这样如果是xxx.com,第一组的内容就会变成xxx.,这不是我要的,如果是xxx.com,分组后应该第一组里面是空。


------解决方案--------------------
我的方法是把字符串反过来 ,从尾部开始匹配,因为变的只是头部
var testReg = /(com\.[^\.]*)\.?(.*)?/gi;
var url = new String( "test.cnblogs.com ");
var reverseUrl = url.split( ". ").reverse().join( ". ");//先对url进行反序
testReg.test(reverseUrl);//匹配
var class1 = RegExp[ "$1 "].split( ". ").reverse().join( ". ");//对获取的结果1进行反序,这里是xxx.com
alert(class1);
var class2 = RegExp[ "$2 "];//这里是*.的内容如果对于cnblogs.com *.为空
alert(class2);
------解决方案--------------------
用java写的 我还不会用javascript 输入匹配的字符串 都差不多 你看看吧

package test;
import java.util.regex.*;
public class aaaa {
public static void main(String[] args) {
Pattern pattern=Pattern.compile( "(\\w+\\.)?(\\w+\\.\\w+) ");
String url= "qq.com ";

Matcher matcher=pattern.matcher(url);

while(matcher.find())
{
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}

}
}
------解决方案--------------------
忘了问了 在js里怎么得到 正则匹配的内容啊? 就像java里的
while(matcher.find())
{
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
} 这样! 谢谢
------解决方案--------------------
看下这个:

http://jorkin.reallydo.com/article.asp?id=388

很好很强大.