var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i");
//var reg = new RegExp("(^[\\?|&])" + name + "=([^&]*)(\\s|&|$)", "i");
上面2个正则,第一个正确,第二个错误,为什么? 
第一个正则中 (^|\\?|&) 为什么 ^后面必须有|,没有就不能匹配。这个正则是用来匹配url上参数的值的。

解决方案 »

  1.   

    http://localhost:5806/WebSite3/pagination.htm?id=2用第一个正则可以去到值是2
      

  2.   

    正则表达式语法:^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
     
    x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
      
    [xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 ——《JavaScript 语言参考》中文版.chm 
      

  3.   


    var name = 'id';var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i");
    //相当于
    var reg1 = /(^|\?|&)id=([^&]*)(\s|&|$)/i;var reg = new RegExp("(^[\\?|&])" + name + "=([^&]*)(\\s|&|$)", "i");
    //相当于
    var reg2 = /(^[\?|&])id=([^&]*)(\s|&|$)/i;//reg1的匹配字符串是以下几种(不管结尾):
    var match1 = "******id=xxxx" || "*******?id=xxxx" || "*******&id=xxxx";//reg2的匹配字符串是以下几种:
    var match2 = "?id=xxxx" || "&id=xxxx";
      

  4.   


    按照你的这种理解,match2.$2 也应该是可以去到值才对吧
      

  5.   

    (^|[?|&])id=([^&]*)(\\s|&|$)
    用这个正则也是可以的。
    为什么一定要^后面的 |  ,我所了解的 |  不是或的意思吗