首页 > 代码库 > javascript中match和RegExp组合用法

javascript中match和RegExp组合用法

 function getCookie(name)//取cookies函数                {            //coook中document.cookie = "age=12; name=1.css";            var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));            if (arr != null) return unescape(arr[2]); return null;        }        //getCookie(name);        //arr[0]="name=1.css"        //arr[1]=""        //arr[2]="1.css"        //arr[3]=""        //为什么arr返回的长度为4的数组?        //在博客园和csdn问了好多都没有一个准确的回答,之后在一步一步实验中发现了答案     //第一步:先匹配"(^| )" + name + "=([^;]*)(;|$)"        //第二步:在匹配()里面的也就是(^| ),([^;]*),(;|$)        //答案就是"(^| )" + name + "=([^;]*)(;|$)",(^| ),([^;]*),(;|$).也就返回了arr长度为4的数组        //注意:一定要第一步能匹配,才会进行第二步匹配.否者直接返回null        //由此举一反三,我们在用javascript获取参数时也以用这个        function Request(name) {            //url=http://localhost:9120/Cookie.html?mly=1&c=12            var arr = window.location.search.match(new RegExp("([(^)(&)(?)])" + name + "=([^&]*)(&|$)"));            if (arr != null) return unescape(arr[2]); return null;        }        //Request("mly"); //返回1        //注意:在前面我们说过()会多次匹配,在()中继续加()还会继续匹配        //例如:"12".match(new RegExp("((1))2"))会返回长度为3的数组,arr[0]=12,arr[1]=1,arr[2]=1;        //例如:"12".match(new RegExp("((1)|(2))2"))会返回长度为4的数组,arr[0]=12,arr[1]=1,arr[2]=1,arr[3]=undefined;        //arr[3]=undefined在右边(2)在第一次匹配时没有用到,以后在与(2)匹配时直接返回undefined;这也证明了有多少个()就会返回()+1个长度的数组        //其中在([(^)(&)(?)])中多次用了(),但是因为在[]中,就不需要遵循以上规则了

 

javascript中match和RegExp组合用法