JavaScript正则表达式解惑解决办法

JavaScript正则表达式解惑刚开始学习JavaScript中正则表达式的内容,对其有所不解,主要是:replace函数替换

JavaScript正则表达式解惑
刚开始学习JavaScript中正则表达式的内容,对其有所不解,主要是:

replace函数替换的第二个参数中,使用$符号的问题,如下:


不懂其中$` $& $' 的用法,我是在w3cshool网站上学的,它的例子并未详细讲解这三个的用法,
还请各位大侠帮忙讲解一下,万分感谢。


PS: 关于这个用法,不知道用什么来描述,以便可以搜索到相关的资料,
网上好多讲JavaScrit正则表达式的部分都没有这方法的具体讲解。



[解决办法]
$` $& $' 分别代替匹配字符串左侧,匹配字符串,匹配字符串右侧

可以用于更换位置,和一些操作
[解决办法]

HTML code
<html><head>  <script language="javascript">     function Window_Load(){      var str = "a123b456c78";      var reg = /(\d+)/g;  //加上个分组括号            reg.test(str); //进行正则匹配  reg.test() 或 reg.exec() 或 reg.compile()      /*          在javascript里,正则匹配完成以后,当前匹配所有相关的内容都会放到RegExp         对象里,所以,你要是想查看($` $& $‘)的内容,像下面这样就可以了:       */      log("正则表达式:", reg.source);      log("字符串:", RegExp["$_"]);   //RegExp.input      log("匹配字串:", RegExp["$&"]);      log("匹配字串左侧的字串(RegExp[\"$`\"]):" ,RegExp["$`"]); //RegExp.leftContext      log("匹配字串右侧的字串(RegExp[\"$'\"]):" ,RegExp["$'"]); //RegExp.rightContext      log("捕获的第一个分组的内容(RegExp[\"$1\"]):",RegExp["$1"]);       log("最后一个括号括起来的字串(RegExp[\"$+\"]):",RegExp["$+"]);//RegExp.lastParen        }        function log(){         for(var i = 0; i < arguments.length;i++){          document.write(arguments[i]+ " ");         }       document.write("<BR />");    }  </script></head><body onload="Window_Load();"> </body></html>
[解决办法]
我自己的贴子居然没有权限修改。。 再发一个:
HTML code
<html><head>  <script language="javascript">    function Window_Load(){      /*        漏了一个,你说的replace函数替换的第二个参数中,使用$符号的问题      */      var str = "a1b2c3";            /*        比如上面的str字串,假设想把字串里的所有数字提取出来(或者说把里面的字母全干掉)      */      //1. 可以把字母全部replace成空      var reg = /[a-z]/g; //注意一定要加上 g ,表示全部替换,不然的话之能替换第一个       log(reg.toString(), "  str.replace(reg,\"\") : " ,str.replace(reg,"")); //返回:123            //2. 字串格式固定的情况下,就可以用$1,$1..$2的方式直接替换      var reg = /^[a-z](\d)[a-z](\d)[a-z](\d)$/;      log(reg.toString(), "  str.replace(reg,\"$1$2$3\") : " ,str.replace(reg,"$1$2$3")); //返回:123       log(reg.toString(), "  str.replace(reg,\"$1$1$3\") : " ,str.replace(reg,"$1$1$3")); //返回:113       log(reg.toString(), "  str.replace(reg,\"$2$1$3\") : " ,str.replace(reg,"$2$1$3")); //返回:213       log(reg.toString(), "  str.replace(reg,\"$2测$2试$3\") : " ,str.replace(reg,"$2测$2试$3")); //返回:2测2试3              //其实在执行str.replace以后,正则表达式已经匹配过一次了,所以下面代码可用      log(reg.toString(), "  RegExp[\"$1\"] + RegExp.$2 + RegExp.$3 : ", RegExp["$1"] + RegExp.$2 + RegExp.$3); //返回123             //3。RegExp.exec() 或 String.mactch()方法来实现      var reg = /\d/g; //你可以自己测试一下 有g 跟 没g的区别       var rdata = "";       while(reg.exec(str)){  //没有g的时候 这个会变成死循环 (别说我没提醒你啊..!)          rdata += RegExp["$&"];      }      log(reg.toString(),"  reg.exec(str) : ",rdata); //返回123        //或者       var result = str.match(reg); //返回结果数组      log(reg.toString(), "  str.match(reg).join(\"\") : ", result.join("") );//返回123     }      function log(){       for(var i = 0; i < arguments.length;i++){        document.write(arguments[i]+ " ");       }     document.write("<BR />");  }  </script></head><body onload="Window_Load();"> </body></html> 


[解决办法]

JScript code
        var str = "Hello Hi Welcome",            reg = /Hi/;        alert(str.replace(reg, "Hey"));    // "Hello Hey Welcom"        alert(str.replace(reg, "$`"));        // "Hello Hello  Welcome"        alert(str.replace(reg, "$&!"));        // "Hello Hi! Welcome"        alert(str.replace(reg, "$'"));        // "Hello  Welcome Welcome"