2014-6-27-js-正则-匹配获取url参数

1.根据指定参数名获取参数值

A页面向连接到B页面的url为:

http://www.189dg.com/ajax/sms_query.ashx?action=smsdetail&sid=22&stime=2014-06-27&etime=2014-06-27

我们要得根据参数名获取到参数值,如根据action可以获取到smsdetail


B页面里:

我们可以通过  var url = window.location;获取到A页面传输过来的url。

 var sid = GetParam(url, "sid");//这样我们就获取到参数名为sid的值,即22.


//获取参数的方法

//url为穿过来的链接,id为参数名

   function GetParam(url, id) {
            url = url+ "";
            regstr = "/(\\?|\\&)" + id + "=([^\\&]+)/";
            reg = eval(regstr);//eval可以将 regstr字符串转换为 正则表达式
            result = url.match(reg);//匹配的结果是:result[0]=?sid=22 result[1]=sid result[2]=22。所以下面我们返回result[2]

            if (result && result[2]) {
                return result[2];
            }
        }


2.获取所有参数保存到数组

var url = "http://127.0.0.1/e/action/ShowInfo.php?classid=9&id=2";
function parse_url(_url){
 var pattern = /(\w+)=(\w+)/ig;
 var parames = {};
 url.replace(pattern, function(a, b, c){
  parames[b] = c;
 });
 return parames;
}
var parames = parse_url(url);
alert(parames['classid'] + ", " + parames['id']);
</script>
解析:
这是最关键的.当replace匹配到classid=9时.那么就用执行function(a,b,c);其中a的值
为:classid=9,b的值为classid,c的值为9;(这是反向引用.因为在定义正则表达式的时候有
两个子匹配.)
  然后将数组的key为classid的值赋为9;然后完成.
 再继续匹配到id=2;此时执行function(a,b,c);其中a的值为:id=2,b的值为id,c的值为2;然
后将数组的key为id的值赋为2.

调用:
var parames = parse_url(url);
alert(parames['classid'] + ", " + parames['id']);//最后打印.根据key值来打印数组对


应的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个 JavaScript 正则表达式的意思是:匹配不在一个负号之后的字符。 其中,?<! 表示负向零宽断言,意思是在匹配的位置的前面不能有负号。 例如,可以用这个正则表达式匹配自然数,如 0、1、2 等,但不匹配负数,如 -1、-2 等。 示例代码: ``` let regex = /(?<!-)\d+/; let str = "-1 -2 0 1 2 3"; let result = str.match(regex); console.log(result); // ["0", "1", "2", "3"] ``` 上面的代码中,regex 是一个正则表达式,它匹配不在负号之后的数字。然后使用字符串的 match 方法匹配字符串 str,最后将匹配到的结果输出到控制台。输出的结果是 ["0", "1", "2", "3"],表示在字符串 str 中匹配到了 0、1、2、3 这四个数字。 ### 回答2: 这个正则表达式 `(?<!-)` 是一个反向否定预测,用于从给定的字符串中匹配不以连字符(-)开头的部分。 正则表达式的含义解释如下: - `(?<!-)`:表示反向否定预测,即后面不能有连字符(-)。 - 连字符(-):表示匹配连字符(-)字符。 举个例子,假设有字符串 "abc-def-xyz",我们想要匹配不以连字符开头的部分,即 "abc" 和 "xyz"。这个正则表达式 `(?<!-)` 的作用就是匹配不以连字符开头的部分。如果将正则表达式应用于这个字符串,将会匹配到 "abc" 和 "xyz"。 另外,需要注意的是,这个正则表达式匹配不以连字符开头的部分,而不会移除连字符本身。 总结:这个正则表达式 `(?<!-)` 的意思是匹配不以连字符开头的部分。 ### 回答3: 这个正则表达式中的 `(?<!-)` 意思是负前向断言,用来匹配不以 `-` 符号开头的文本。在正则表达式中,通常我们可以使用 `(?<!...)` 来表示负前向断言,其中 `...` 表示一个具体的模式或者字符。 举个例子,假设我们有一个字符串 `abc-def`,我们希望匹配除了以 `-` 开头的文本之外的所有内容,我们可以使用 `(?<!-)\w+` 来实现。其中 `\w+` 表示匹配一个或多个字母、数字或下划线。 在此例中,正则表达式 `(?<!-)\w+` 会匹配 `abc` 和 `def`,但不会匹配 `-def`。因为 `(?<!-)` 的作用是确保匹配的文本之前不出现 `-` 符号。 这个正则表达式可以在很多情况下使用,例如在对 URL 进行匹配时,我们可以使用 `(?<!-)[a-zA-Z0-9.-]+` 来匹配除了以 `-` 开头的 URL 内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值