首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

求一句正则表达式~该怎么解决

2013-07-16 
求一句正则表达式~~~~~~~~~~~~有这么一段字符串:http://192.168.40.224/htmlargu/demo.html?log_id111&ca

求一句正则表达式~~~~~~~~~~~~
有这么一段字符串:
http://192.168.40.224/htmlargu/demo.html?log_id=111&cat_id=222&page=333

上面是通过:
var LocString=String(window.document.location.href);
获取的。

然后我想构造一个函数,
function GetQueryString(str){
}

当传入关键字如“cat_id”的时候,能够返回它的值,如:
var cat_id = GetQueryString("cat_id")
这样就得到了cat_id = 222;

函数里面,我看别人的是:

function GetQueryString(str){
                var rs=new RegExp("(^|)" +str+ "=([^\&]*)(\&|$)","gi").exec(LocString),tmp;
                if(tmp=rs)return
                        tmp[2];
                return "没有这个参数";
        }


但运行结果是错误的,是别人写的正则表达式错了? 正确的正则表达式如何写啊,new RegExp的这一句是什么意思啊?太复杂了。。 正则表达式 JavaScript
[解决办法]
function getQueryString(key) {
var regex_str = "^.+\\?.*?\\b"+ key +"=(.*?)(?:(?=&)
[解决办法]
$
[解决办法]
#)"
var regex = new RegExp(regex_str,"i");
var url = window.location.toString();
if(regex.test(url)) return RegExp.$1;
return null;
}

alert( getQueryString('cat_id') );

[解决办法]
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具
http://http://www.w3school.com.cn/js/jsref_obj_regexp.asp


$(function () {
            var str = "cat_id";
            var LocString = "http://192.168.40.224/htmlargu/demo.html?log_id=111&cat_id=222&page=333";


            var rs = new RegExp("(^
[解决办法]
)" + str + "=([^\&]*)(\&
[解决办法]
$)", "gi").exec(LocString),tmp;
            if (tmp = rs)
                alert(tmp[2]);
        });



貌似木有问题啊 alert是222
[解决办法]

var LocString = "http://192.168.40.224/htmlargu/demo.html?log_id=111&cat_id=222&page=333";   
var qso = {};
LocString.replace(/([^\?\&]+)=([^\&]*)/ig,function(a,b,c){qso[b]=c});
alert(qso.log_id);
alert(qso.cat_id);
alert(qso.page);


[解决办法]
function GetQueryString(name) {
        var reg = new RegExp("[&?]"+ name + "=([^&#]*)","ig");
        var res = [];
        location.search.replace(reg, function($, $1) {
            res.push(decodeURIComponent($1));
        });
        return res;//考虑到有可能是多个值,返回数组
    }

热点排行
Bad Request.