正则练习兼文本处理器

<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset = gb2312">
<title>梅雪香 ---- 正则练习兼文本处理器</title>
<script language = "JavaScript">
<!--
function ge(str){
 if(arguments.length == 0)
  throw new Error(-1,"ge函数需要一个字符串类型参数");
 if(typeof(str) != "string")
  throw new Error(-1,"ge函数需要字符串类型参数");
 return document.getElementById(str);
}
/*
待完成功能:
根据匹配结果进行动态输出
代码规范化

*/
var regInput = null;//正则输入文本框
var strInput = null;//匹配文件输入框
var repAs = null;//替换为文本框
var strOutput = null;//输出文本框
var fIgnore = null;//忽略大小写checkbox
var fGlobal = null;//全局匹配checkbox
var autoRep = null;//自动匹配checkbox
var autoCopy = null;//自动复制checkbox
var autoWrite = null;//自动写入checkbox
var txtFile = null;//文件选择框

var fso = null;//全局FSO对象.

//全局变量初始化
function init(){
 regInput = ge("txtReg");//正则输入文本框
 strInput = ge("txtTestStr");//匹配文件输入框
 repAs = ge("txtReplaceAs");//替换为文本框
 strOutput = ge("txtOut");//输出文本框
 fIgnore = ge("chkIgnoreCase");//忽略大小写checkbox
 fGlobal = ge("chkGlobal");//全局匹配checkbox
 autoRep = ge("chkAutoReplace");//自动匹配checkbox
 autoCopy = ge("chkAutoCopy");//自动复制checkbox
 autoWrite = ge("chkAutoWrite");//自动写入checkbox
 txtFile = ge("txtFile");// 文件选择框

}
//清空文本内容
function clearTxt(){
 window.location.href = window.location.href;
 return;
}
//正则测试
function beginTest(){
 out(true);
 var reg= makeReg();
 var testResult = reg.test(strInput.value);
 strOutput.value = testResult;
 out();
}
//进行匹配
function beginMatch(){
 out(true);
 var reg= makeReg();
 var testResult = strInput.value.match(reg);
 var outTd = document.getElementById("testVal");
 if(!testResult){
  strOutput.value = "没有匹配到任何内容!"
  return;
 }
 strOutput.value=testResult.join("/r/n");
 out();
}
//进行替换
function beginReplace(){
 out(true);
 var reg= makeReg();
 var testResult = strInput.value.replace(reg,repAs.value);
 strOutput.value=testResult;
 out();
 if(autoCopy.checked)
  document.getElementById("btnCpyResult").click();
}
//给tdi赋值,当有参数时,代表清空td中的内容
function out(flag){
 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 = (flag?"&nbsp;":tmpStr);
 }
}
//根据字符串生成正则表达式
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(){
 strOutput.select();
 window.clipboardData.setData("text",strOutput.value);
}
//进行自动替换
function AutoReplace(){
 if(autoRep.checked)
  document.getElementById('btnReplace').click()
}
//打开一个文件
function openFileAsInput(src){
 if(!fso)
  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(autoWrite.checked)
  wrBtn.click()
}
//写入文件
function writeToFile(){
 if(!fso)
  fso = new ActiveXObject("Scripting.FileSystemObject");
 var val = txtFile.value;

 var ts = fso.OpenTextFile(val, 2);
 ts.write(strOutput.value);
 ts.close();
 window.status = val + " 替换结果保存成功!"
}

//-->
</script>
<style type="text/css">
td{font-size:12px}
</style>
</head>

<body οnlοad="init()">
<table width="800" border="1" cellspacing="0" cellpadding="0" align="center" style="border-collapse:collapse ">
  <tr height="100">
    <td align="right">输入测试字符串:<br>
  <input type="file" id="txtFile" οnchange="openFileAsInput(this)" style="display:none">
  <input type="button" id="btnFromFile" οnclick="document.getElementById('txtFile').click()" value="打开文件">
 </td>
    <td><textarea id="txtTestStr" οnpaste="AutoReplace()" style="width:100%; height:100%; background-color:#FFFFEF "></textarea></td>
  </tr>
  <tr height="30">
    <td width="15%" align="right">输入正则规则字符串:</td>
    <td width="85%">
  <input type="text" value="" 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 "></textarea></td>
  </tr>
  <tr height="100">
    <td align="right">输出字符串:<br>
 <input type="button" id="btnToFile" οnclick="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" οnclick="clearTxt()" value="Reset"style="width:100">
  <input type="button" id="btnTest" οnclick="beginTest()" value="test()"style="width:100">
  <input type="button" id="btnMatch" οnclick="beginMatch()" value="match()"style="width:100">
  <input type="button" id="btnReplace" οnclick="beginReplace()" value="replace()"style="width:100">
  <input type="button" id="btnCpyResult" οnclick="copyResult()" value="复制替换结果"style="width:100">
  <input type="checkbox" id="chkAutoReplace" οnclick="startAutoReplace(this)">自动替换
  <input type="checkbox" id="chkAutoCopy">自动复制
  <input type="checkbox" id="chkAutoWrite">自动写入
 </td>
  </tr>
</table>
<center><b><font style="font-size:30">运行结果</font></b></center>
<table width="800" border="1" cellspacing="0" cellpadding="0" align="center" style="border-collapse:collapse ">
  <tr height="25" bgcolor="#CCCCCC">
    <td width="15%" align="center">变量名</td>
    <td width="35%" align="center">值</td>
    <td width="15%" align="center">变量名</td>
    <td width="35%" align="center">值</td>
  </tr>
  <tr height="25">
    <td align="center">reg.test()</td>
    <td align="right" id="testVal">&nbsp;</td>
    <td align="center">$1</td>
    <td align="right" id="td1">&nbsp;</td>
  </tr>
  <tr height="25">
    <td align="center">$2</td>
    <td align="right" id="td2">&nbsp;</td>
    <td align="center">$3</td>
    <td align="right" id="td3">&nbsp;</td>
  </tr>
  <tr height="25">
    <td align="center">$4</td>
    <td align="right" id="td4">&nbsp;</td>
    <td align="center">$5</td>
    <td align="right" id="td5">&nbsp;</td>
  </tr>
  <tr height="25">
    <td align="center">$6</td>
    <td align="right" id="td6">&nbsp;</td>
    <td align="center">$7</td>
    <td align="right" id="td7">&nbsp;</td>
  </tr>
  <tr height="25">
    <td align="center">$8</td>
    <td align="right" id="td8">&nbsp;</td>
    <td align="center">$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:wy_hd@163.com">报告BUG</a></td>
  </tr>
</table>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值