刚看书说匹配 url后参数部份字符串是否具有paraName=value的形式,使用的正则表达式
new RegExp("^"+paraName+"[?=\\=]","g"),为什么后半部份要用[?=\\=]呢?直接用\=
不就可以了吗,问下有什么区别另外,有什么文章深入的介绍了JS正则表达式,也请推荐下。

解决方案 »

  1.   

    用"\\"是因为这是在javascript的字符串中,两个"\\"表示一个"\",即"\\="表示的字符串:\=(实际正则表达式中还需要一个转义符\,因此这个正确)
    如果用"\="表示的字符串:=前面加上 ?= 估计是打算只查找那个=号但不匹配 即只匹配出参数名,而不包含后面的等号。但是,实际上想要达到这种效果,应该用圆括号而非方括号下面是一个例子,可以看到如果用圆括号,=只做查找而未被匹配出来;用方括号则=被匹配出来var re1 = new RegExp("name(?=\\=)", "gi");
        var re2 = new RegExp("name[?=\\=]", "gi");
        var s = "123.aspx?name=abc";
        alert(s.match(re1));
        alert(s.match(re2));
      

  2.   

    把结果写上,在IE8下测试
    var re1 = new RegExp("name(?=\\=)", "gi");
        var re2 = new RegExp("name[?=\\=]", "gi");
        var s = "123.aspx?name=abc";
        alert(s.match(re1));    // 结果为 name
        alert(s.match(re2));    // 结果为 name=
      

  3.   

    应该是这样的吧,:
    new RegExp("^"+paraName+"(?=\\=)","g")
    表示正向查找,匹配一个paraName后面跟“=”的情况,(?=exp)断言自身出现的位置的后面能匹配表达式exp