前段时间差不多都要和正则表达式打交道,所以当时就弄了这个测试练习页面.把以下代码保存为一个HTML文件用IE打开即可使用:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>正则表达式测试</title>
<style type="text/css">
<!--
td {
font-family: "宋体";
font-size: 12px;
color: #666666;
text-decoration: none;
}
input {
font-family: "宋体";
font-size: 12px;
color: #666666;
text-decoration: none;
border: 1px solid #000000;
height: 18px;
}
textarea {
font-family: "宋体";
border: 1px solid #333333;
word-spacing:inherit
}
.table {
font-family: "宋体";
font-size: 12px;
border: 1px solid #000000;
white-space: normal;
table-layout: fixed;
WORD-BREAK: break-all;
WORD-WRAP: break-word;
display: table;
}
.checkbox {
border: 1px dotted #CCCCCC;
}
-->
</style>
</head>
<body>
<table width="100%" height="306" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><div align="center">
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<textarea name="InputBox" cols="100" rows="20" id="InputBox"></textarea>
</div></td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="1"></td>
</tr>
</table>
<table width="722" border="0" cellpadding="0" cellspacing="1" class="table">
<tr>
<td height="25" bgcolor="#F2F2F2"><div align="center">正则表达式:
<input name="RegExpBox" type="text" id="RegExpBox" size="100">
</div></td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="1"></td>
</tr>
</table>
<table width="722" border="0" cellpadding="0" cellspacing="0" class="table">
<tr>
<td width="580" height="25" bgcolor="#F2F2F2"><div align="center">
<input name="SingleLine" type="checkbox" class="checkbox" value="1">
<span title="将更改(.)的意思,使它包含所有字符">单行模式查找</span>
<input name="IgnoreCase" type="checkbox" class="checkbox" value="1">
<span title="不区分字母的大小写">不区分大小写</span>
<input name="Global" type="checkbox" class="checkbox" value="1">
<span title="查找所有的可匹配项">全局模式查找</span>
<input name="ShowSub" type="checkbox" class="checkbox" value="1">
<span title="只显示在()里面的记录集">只显示子记录集结果</span>
</div></td>
<td width="140" bgcolor="#F2F2F2"><input name="btnSearch" type="button" id="btnSearch" value="搜 索" onClick="vbscript:SearchRegExp()"></td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="1"></td>
</tr>
</table>
<table width="722" border="0" cellpadding="0" cellspacing="1" class="table">
<tr>
<td height="25" bgcolor="#FFFFCC"><div align="left" id="ShowText">
</div></td>
</tr>
</table>
</div></td>
</tr>
</table>
</body>
<script language="vbscript">
Function SearchRegExp()
Dim HTML,IgnoreCase,Global,Pattern,ShowSub
HTML = document.all.InputBox.value
Pattern = document.all.RegExpBox.value
If Trim(HTML) = "" Or IsNull(HTML) Or Pattern = "" Then
document.all.ShowText.innerHTML = "<font color='red'>---------请输入要查找的文本---------</font>"
Exit Function
End If
If document.all.SingleLine.checked Then
HTML = Replace(HTML,VbCrlf,"")
End If
Global = document.all.Global.checked
IgnoreCase = document.all.IgnoreCase.checked
ShowSub = document.all.ShowSub.checked
Dim RegExpObj,RegMatch,I,II,SubMatch
Set RegExpObj = New RegExp
RegExpObj.IgnoreCase = IgnoreCase
RegExpObj.Global = Global
RegExpObj.Pattern = Pattern
Set RegMatch = RegExpObj.Execute(HTML)
If RegMatch.Count < 1 Then
document.all.ShowText.innerHTML = "<font color='red'>---------共查找到0个记录---------</font>"
Set RegMatch = Nothing
Set RegExpObj = Nothing
Exit Function
End If
document.all.ShowText.innerHTML = "<font color='red'>-----------------------查找开始--------------------</font><br>"
Dim innerHTML
innerHTML = document.all.ShowText.innerHTML
For I = 0 To RegMatch.Count - 1
Set SubMatch = RegMatch(I).SubMatches
If Not ShowSub Then
innerHTML = innerHTML + "<font color='red'>记录集" & I & ":</font><font color='blue'>" + HTMLEncode(RegMatch(I).Value) + "</font>"
End If
For II = 0 To SubMatch.Count - 1
innerHTML = innerHTML + "<br><font color='#FF00FF'>" +HTMLEncode(" 子记录") & II & ":</font>" + HTMLEncode(SubMatch(II))
Next
innerHTML = innerHTML + "<br><hr width=""100%"" size=""1"">"
Next
document.all.ShowText.innerHTML = innerHTML
Set RegMatch = Nothing
Set RegExpObj = Nothing
End Function
Function HTMLEncode(ByVal fString)
If Not IsNull(fString) then
fString = Replace(fString, ">", ">")
fString = Replace(fString, "<", "<")
fString = Replace(fString, " ", " ")
fString = Replace(fString, CHR(32), "<I></I> ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
fString = Replace(fString, CHR(39), "'")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")
fString = Replace(fString, CHR(10), "<BR> ")
HTMLEncode = fString
Else
HTMLEncode=""
End If
End Function
</script>
</html>