<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==""?" ":reg$i);
document.getElementById("td"+i).innerHTML = (flag?" ":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
<input type="checkbox" id="chkIgnoreCase">i
</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"> </td>
<td align="center">$1</td>
<td align="right" id="td1"> </td>
</tr>
<tr height="25">
<td align="center">$2</td>
<td align="right" id="td2"> </td>
<td align="center">$3</td>
<td align="right" id="td3"> </td>
</tr>
<tr height="25">
<td align="center">$4</td>
<td align="right" id="td4"> </td>
<td align="center">$5</td>
<td align="right" id="td5"> </td>
</tr>
<tr height="25">
<td align="center">$6</td>
<td align="right" id="td6"> </td>
<td align="center">$7</td>
<td align="right" id="td7"> </td>
</tr>
<tr height="25">
<td align="center">$8</td>
<td align="right" id="td8"> </td>
<td align="center">$9</td>
<td align="right" id="td9"> </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>