有没有高人帮完善一下啊,能不能给加上match和replace的功能呢?
有没有什么bug呢? 唉,大侠们都哪里去了,还是不愿一顾这点小事儿啊我觉得正则这个东西非常有用,而且大部分的js,VBS初学者都比较难迅速掌握,一个好的工具会起很大作用的.

解决方案 »

  1.   

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>梅雪香 ---- 正则练习兼文本处理器</title>
    <script language="JavaScript">
    <!--
    /*
    待完成功能:
    根据匹配结果进行动态输出
    代码规范化*/
    var regInput=null;
    var strInput=null;
    var repAs=null;
    var outInput=null;
    var fIgnore=null;
    var fGlobal=null;
    var atReplace = null;
    var fso = null;
    //全局变量初始化
    function init(){
    regInput=document.getElementById("txtReg");
    strInput=document.getElementById("txtTestStr");
    repAs=document.getElementById("txtReplaceAs");
    outInput=document.getElementById("txtOut");
    fIgnore=document.getElementById("chkIgnoreCase");
    fGlobal=document.getElementById("chkGlobal");
    atReplace=document.getElementById("chkAutoReplace");
    }
    //清空文本内容
    function clearTxt(){
    regInput.value="";
    strInput.value="";
    repAs.value="";
    outInput.value="";
    fIgnore.checked=false;
    fGlobal.checked=false;
    }
    //正则测试
    function beginTest(){
    var reg= makeReg();
    var testResult = reg.test(strInput.value);
    document.getElementById("testVal").innerHTML=testResult;
    for(var i=1;i<10;i++){
    var reg$i = eval("RegExp.$"+i);
    if(reg$i == " ") reg$i = "空格";
    var tmpStr = (reg$i==""?"&nbsp;":reg$i);
    document.getElementById("td"+i).innerHTML=tmpStr;
    }
    }
    //进行匹配
    function beginMatch(){
    var reg= makeReg();
    var testResult = strInput.value.match(reg);
    var outTd = document.getElementById("testVal");
    if(!testResult){
    outTd.innerHTML = "没有匹配到任何内容!"
    return;
    }
    outTd.innerHTML=testResult.join(",");
    for(var i=1;i<10;i++){
    var reg$i = eval("RegExp.$"+i);
    if(reg$i == " ") reg$i = "空格";
    var tmpStr = (reg$i==""?"&nbsp;":reg$i);
    document.getElementById("td"+i).innerHTML=tmpStr;
    }
    }
    //进行替换
    function beginReplace(){
    var reg= makeReg();
    var testResult = strInput.value.replace(reg,repAs.value);
    outInput.value=testResult;
    for(var i=1;i<10;i++){
    var reg$i = eval("RegExp.$"+i);
    if(reg$i == " ") reg$i = "空格";
    var tmpStr = (reg$i==""?"&nbsp;":reg$i);
    document.getElementById("td"+i).innerHTML=tmpStr;
    }
    if(document.getElementById("chkAutoCopy").checked)
    document.getElementById("btnCpyResult").click();
    }
    //根据字符串生成正则表达式
    function makeReg(){
    var strFlag="";
    if(fGlobal.checked) strFlag+="g";
    if(fIgnore.checked) strFlag+="i";
    var reg=new RegExp(regInput.value,strFlag)
    return reg;
    }
    //设置是否进行自动替换
    function startAutoReplace(src){
    if(regInput.value=="") src.checked = false;
    }
    //复制替换结果
    function copyResult(){
    outInput.select();
    window.clipboardData.setData("text",outInput.value);
    }
    //进行自动替换
    function AutoReplace(){
    if(atReplace.checked)
    document.getElementById('btnReplace').click()
    }
    //打开一个文件
    function openFileAsInput(src){
    fso = new ActiveXObject("Scripting.FileSystemObject");
    var val = src.value;
    var file = fso.GetFile(val);
    var ts = fso.OpenTextFile(val, 1);
    strInput.value= (file.Size>0?ts.ReadAll():"");
    ts.close();
    AutoReplace();
    var wrBtn = document.getElementById('btnToFile');
    wrBtn.disabled = false;
    if(document.getElementById('chkAutoWrite').checked)
    wrBtn.click()
    }
    //写入文件
    function writeToFile(){
    fso = new ActiveXObject("Scripting.FileSystemObject");
    var val = document.getElementById('txtFile').value;
    //var file = fso.GetFile(val);
    var ts = fso.OpenTextFile(val, 2);
    ts.write(outInput.value);
    ts.close();
    window.status = val + " 替换结果保存成功!"
    }//-->
    </script>
    <style type="text/css">
    td{font-size:12px}
    </style>
    </head><body onload="init()">
    <table width="800" border="1" cellspacing="0" cellpadding="0" align="center">
      <tr height="100">
        <td align="right">输入测试字符串:<br>
    <input type="file" id="txtFile" onchange="openFileAsInput(this)" style="display:none">
    <input type="button" id="btnFromFile" onclick="document.getElementById('txtFile').click()" value="打开文件">
    </td>
        <td><textarea id="txtTestStr" onpaste="AutoReplace()" style="width:100%; height:100%; background-color:#FFFFEF ">f:\test\src\app\a.h
    f:\test\src\app\b.h
    f:\test\src\app\c.c
    f:\test\src\app\d.h
    f:\test\src\app\e.h
    f:\test\src\app\f.h
    f:\test\src\app\g.h
    </textarea></td>
      </tr>
      <tr height="30">
        <td width="20%" align="right">输入正则规则字符串:</td>
        <td>
    <input type="text" value=".+\\([^\\]+\r\n)" id="txtReg" style="width:85%; background-color:#FFFFEF ">
    <input type="checkbox" id="chkGlobal" checked="true">g&nbsp;
    <input type="checkbox" id="chkIgnoreCase">i&nbsp;
    </td>
      </tr>
      <tr height="40">
        <td align="right">替换为字符串:</td>
        <td><textarea id="txtReplaceAs" style="width:100%; height:100%; background-color:#FFFFEF ">$1</textarea></td>
      </tr>
      <tr height="100">
        <td align="right">输出字符串:<br>
    <input type="button" id="btnToFile" onclick="writeToFile()" value="写入文件" disabled="true">
    </td>
        <td><textarea id="txtOut" style="width:100%; height:100%; background-color:#FFFFEF "></textarea></td>
      </tr>
      <tr height="40">
        <td colspan="2" align="center">
    <input type="button" id="btnClear" onclick="clearTxt()" value="Clear"style="width:100">
    <input type="button" id="btnTest" onclick="beginTest()" value="test()"style="width:100">
    <input type="button" id="btnMatch" onclick="beginMatch()" value="match()"style="width:100">
    <input type="button" id="btnReplace" onclick="beginReplace()" value="replace()"style="width:100">
    <input type="button" id="btnCpyResult" onclick="copyResult()" value="复制替换结果"style="width:100">
    <input type="checkbox" id="chkAutoReplace" onclick="startAutoReplace(this)">自动替换
    <input type="checkbox" id="chkAutoCopy">自动复制
    <input type="checkbox" id="chkAutoWrite">自动写入
    </td>
      </tr>
    </table>
    <h3 align="center">运行结果</h3>
    <table width="800" border="1" cellspacing="0" cellpadding="0" align="center">
      <tr height="30" bgcolor="#CCCCCC">
        <td width="25%" align="center">变量名</td>
        <td width="25%" align="center">值</td>
        <td width="25%" align="center">变量名</td>
        <td width="25%" align="center">值</td>
      </tr>
      <tr height="30">
        <td align="right">reg.test()</td>
        <td align="right" id="testVal">&nbsp;</td>
        <td align="right">$1</td>
        <td align="right" id="td1">&nbsp;</td>
      </tr>
      <tr height="30">
        <td align="right">$2</td>
        <td align="right" id="td2">&nbsp;</td>
        <td align="right">$3</td>
        <td align="right" id="td3">&nbsp;</td>
      </tr>
      <tr height="30">
        <td align="right">$4</td>
        <td align="right" id="td4">&nbsp;</td>
        <td align="right">$5</td>
        <td align="right" id="td5">&nbsp;</td>
      </tr>
      <tr height="30">
        <td align="right">$6</td>
        <td align="right" id="td6">&nbsp;</td>
        <td align="right">$7</td>
        <td align="right" id="td7">&nbsp;</td>
      </tr>
      <tr height="30">
        <td align="right">$8</td>
        <td align="right" id="td8">&nbsp;</td>
        <td align="right">$9</td>
        <td align="right" id="td9">&nbsp;</td>
      </tr>
      <tr height="20">
        <td align="right" colspan="4"><a style="color:blue; cursor:hand"><b>Code by Meixx(梅雪香)</b></a></td>
      </tr>
      <tr height="20">
        <td align="right" colspan="4"><a href="mailto:[email protected]">报告BUG</a></td>
      </tr>
    </table></body>
    </html>