<script type="text/javascript">
    var str = "1222,12,34,34,56,56";
    var arr = [];
    str = str.replace(/([^,]*)/g, function($0, $1, i){
     document.writeln("arguments.length="+arguments.length+",  $0="+$0+", $1="+$1+", i="+i+"<br/>");
        if(str.indexOf($1) == i) arr[arr.length] =  $1;
    });
    document.write(arr.join(','));
</script>
上面这个正则表达式/([^,]*)/g为什么匹配出来的结果是1222,12,34,34,56,56
我想问一下的是为什么会出现个字匹配的啊:$0, $1   ,/([^,]*)/里面不是只看到一个括号()吗

解决方案 »

  1.   

    var str = 'abc';
    var arr = /a(b)c/.exec(str)
    alert(arr)
    alert(arr[0]) // $0
    alert(arr[1]) // $1
      

  2.   

    上面这个正则表达式/([^,]*)/g为什么匹配出来的结果是1222,12,34,34,56,56
    我想问一下的是为什么会出现个字匹配的啊:$0, $1 ,/([^,]*)/里面不是只看到一个括号()吗//
    /xxxx/g   ,你加了修饰符g,会把所有的匹配都查找出来的。$0,是符合的整个表达式,$1,是第一个分组的内容。如/abc(dd)/  "kkabc(dd)
    $0=abcdd  $1=dd