全能正则表达式测试程序的编写

来源:互联网 发布:asp.net oa系统源码 编辑:程序博客网 时间:2024/06/05 08:26

       为了快速学习正则表达式,本人利用一个下午时间使用“网页+JAVASCRIPT技术”编写实现了全能正则表达式测试程序。该测试程序中您可以输入任一的匹配模式、任意的待匹配的内容来得到详细的匹配结果。非常小巧使用,所以愿意和大家分享,希望对大家学习正则表达式和测试自己的正则表达式都有好处。

      程序运行的界面如下:

 

      下面是对应的源代码:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>全能正则表达式测试程序 [made by sunrise_cn]</title>
<script language="JavaScript">
function testMatch()

    var pattern, Content, flags="", result, info;
   
 if (document.testForm.pattern.value == "")
 {
  alert("正则表达式规则不能为空");
  
  document.testForm.pattern.focus();
  
  return;
 }
 
    if (document.testForm.Content.value == "")
 {
  alert("测试内容不能为空");
  
  document.testForm.Content.focus();
  
  return;
 }
 
 if (document.testForm.flag_i.checked)
 {
  flags += document.testForm.flag_i.value;
 }
 
 if (document.testForm.flag_g.checked)
 {
  flags += document.testForm.flag_g.value;
 }
 
 if (document.testForm.flag_m.checked)
 {
  flags += document.testForm.flag_m.value;
 }
 
 pattern = document.testForm.pattern.value; 
 Content = document.testForm.Content.value; 
 
    if (flags == "")
    {
        regex =  new RegExp(pattern);
    }
    else
    {
        regex =  new RegExp(pattern, flags);
    }
    
    if (regex.test(Content))
    {
        info = "测试内容匹配,匹配结果如下:/n";
       
        result = Content.match(regex);
       
        for (var i = 0; i < result.length; i++)
        {
            info += "[" + (i + 1) + "]: " + result[i] + "/n";
        }
    }
    else
    {
        info = "测试内容不匹配!";
    }
 
    alert(info);
}
</script>
</head>

<body>

<b><font size="2" color="#800000">
<div align="center">
 <table cellspacing="1" cellpadding="3" bgcolor="#eaeaea" border="0" id="table1" width="85%">
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#FAFAFA" colspan="2">

<b><font size="2" color="#800000">
   <form method="POST" action="--WEBBOT-SELF--" name="testForm">
    <div align="center"><br>
    <table border="1" width="70%" id="table2" cellspacing="1" cellpadding="0" bgcolor="#EAEAEA" bordercolor="#C0C0C0" style="border-collapse: collapse" height="373">
     <tr>
      <td height="25" align="center" bgcolor="#EAEAEA" colspan="2">
      <b><font size="2" color="#800000">全能正则表达式测试程序</font></b></td>
     </tr>
     <tr>
      <td height="106" align="center" bgcolor="#F6F6F6" width="180">
      <font size="2" color="#FF6600"><b>正则表达式<br>
      </b>pattern<br>
      <b><br>
      </b></font>
      <font style="font-size: 9pt; font-style:italic" color="#666666">
      ( 不需要//,见附录)</font></td>
      <td height="106" align="center" bgcolor="#F6F6F6">
      <textarea rows="2" name="pattern" cols="20" style="padding: 0;width:100%;height:100%"></textarea>
       </td>
     </tr>
     <tr>
      <td align="center" height="183" bgcolor="#F6F6F6" width="180">
      <font size="2" color="#FF6600"><b>测试内容<br>
      </b>content</font></td>
      <td align="center" height="183" bgcolor="#F6F6F6">
      <b><font size="2" color="#800000">
      <textarea rows="2" name="Content" cols="20" style="padding: 0;width:100%;height:100%"></textarea></font></b></td>
     </tr>
     <tr>
      <td align="center" height="57" bgcolor="#F6F6F6" width="180">
      <font size="2" color="#FF6600"><b>匹配标志<br>
      </b>flags</font></td>
      <td align="center" height="57" bgcolor="#F6F6F6">
      <p align="left"><b><font size="2" color="#800000">
      <span style="font-size: 9pt">
      <input type="checkbox" value="i" name="flag_i"></span></font></b><font color="#800000" style="font-size: 9pt">i
      (忽略大小写) </font><font size="2" color="#800000">
      <font color="#800000" style="font-size: 9pt">&nbsp;</font><b><span style="font-size: 9pt"><input type="checkbox" value="g" name="flag_g" checked></span></b><font color="#800000" style="font-size: 9pt">g
      (查找所有)</font> <b>
      <span style="font-size: 9pt">
      <input type="checkbox" value="m" name="flag_m"></span></b><font color="#800000" style="font-size: 9pt">m
      (多行查找)</font></font></p>
      </td>
     </tr>
    </table>
    </div>
    <p align="center"><font color="#FF6600" size="2"><span style="font-size: 9pt">
    <input type="button" value=" 测试 " name="B1" onclick="testMatch();"></span></font><font color="#FF6600" style="font-size: 9pt">&nbsp;&nbsp;
    </font><font color="#FF6600" size="2">
    <span style="font-size: 9pt">
    <input type="reset" value=" 重置 " name="B2"></span></font></p>
   </form>
</font></b>

   <p> </th>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#f0f0f0" colspan="2">
   <b><font size="2" color="#800000">附录1: JAVASCRIPT正则表达式全部符号解释</font></b></th>
  </tr>
  <tr bgcolor="#f0f0f0">
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#FFFFFF" colspan="2" height="18">
    </th>
  </tr>
  <tr bgcolor="#f0f0f0">
   <th style="FONT-SIZE: 12px" align="left" width="80" bgcolor="#f0f0f0">
   字符 </th>
   <th style="FONT-SIZE: 12px" align="left">描述</th>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/ </td>
   <td style="FONT-SIZE: 12px">将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,&#39;n&#39;
   匹配字符 &quot;n&quot;。&#39;/n&#39; 匹配一个换行符。序列 &#39;//&#39; 匹配 &quot;/&quot; 而 &quot;/(&quot; 则匹配 &quot;(&quot;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">^ </td>
   <td style="FONT-SIZE: 12px">匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline
   属性,^ 也匹配 &#39;/n&#39; 或 &#39;/r&#39; 之后的位置。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">$ </td>
   <td style="FONT-SIZE: 12px">匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$
   也匹配 &#39;/n&#39; 或 &#39;/r&#39; 之前的位置。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">* </td>
   <td style="FONT-SIZE: 12px">匹配前面的子表达式零次或多次。例如,zo* 能匹配 &quot;z&quot; 以及 &quot;zoo&quot;。*
   等价于{0,}。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">+ </td>
   <td style="FONT-SIZE: 12px">匹配前面的子表达式一次或多次。例如,&#39;zo+&#39; 能匹配 &quot;zo&quot; 以及 &quot;zoo&quot;,但不能匹配
   &quot;z&quot;。+ 等价于 {1,}。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">? </td>
   <td style="FONT-SIZE: 12px">匹配前面的子表达式零次或一次。例如,&quot;do(es)?&quot; 可以匹配 &quot;do&quot; 或
   &quot;does&quot; 中的&quot;do&quot; 。? 等价于 {0,1}。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">{n} </td>
   <td style="FONT-SIZE: 12px">n 是一个非负整数。匹配确定的 n 次。例如,&#39;o{2}&#39; 不能匹配 &quot;Bob&quot;
   中的 &#39;o&#39;,但是能匹配 &quot;food&quot; 中的两个 o。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">{n,} </td>
   <td style="FONT-SIZE: 12px">n 是一个非负整数。至少匹配n 次。例如,&#39;o{2,}&#39; 不能匹配 &quot;Bob&quot;
   中的 &#39;o&#39;,但能匹配 &quot;foooood&quot; 中的所有 o。&#39;o{1,}&#39; 等价于 &#39;o+&#39;。&#39;o{0,}&#39; 则等价于 &#39;o*&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">{n,m} </td>
   <td style="FONT-SIZE: 12px">m 和 n 均为非负整数,其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如,&quot;o{1,3}&quot;
   将匹配 &quot;fooooood&quot; 中的前三个 o。&#39;o{0,1}&#39; 等价于 &#39;o?&#39;。请注意在逗号和两个数之间不能有空格。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">? </td>
   <td style="FONT-SIZE: 12px">当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m})
   后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 &quot;oooo&quot;,&#39;o+?&#39;
   将匹配单个 &quot;o&quot;,而 &#39;o+&#39; 将匹配所有 &#39;o&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">. </td>
   <td style="FONT-SIZE: 12px">匹配除 &quot;/n&quot; 之外的任何单个字符。要匹配包括 &#39;/n&#39; 在内的任何字符,请使用象
   &#39;[./n]&#39; 的模式。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">(pattern) </td>
   <td style="FONT-SIZE: 12px">匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches
   集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用
   &#39;/(&#39; 或 &#39;/)&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">(?:pattern) </td>
   <td style="FONT-SIZE: 12px">匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用
   &quot;或&quot; 字符 (|) 来组合一个模式的各个部分是很有用。例如, &#39;industr(?:y|ies) 就是一个比 &#39;industry|industries&#39;
   更简略的表达式。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">(?=pattern) </td>
   <td style="FONT-SIZE: 12px">正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,&#39;Windows
   (?=95|98|NT|2000)&#39; 能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot; ,但不能匹配 &quot;Windows 3.1&quot;
   中的 &quot;Windows&quot;。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">(?!pattern) </td>
   <td style="FONT-SIZE: 12px">负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如&#39;Windows
   (?!95|98|NT|2000)&#39; 能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;,但不能匹配 &quot;Windows 2000&quot;
   中的 &quot;Windows&quot;。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">x|y </td>
   <td style="FONT-SIZE: 12px">匹配 x 或 y。例如,&#39;z|food&#39; 能匹配 &quot;z&quot; 或 &quot;food&quot;。&#39;(z|f)ood&#39;
   则匹配 &quot;zood&quot; 或 &quot;food&quot;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">[xyz] </td>
   <td style="FONT-SIZE: 12px">字符集合。匹配所包含的任意一个字符。例如, &#39;[abc]&#39; 可以匹配 &quot;plain&quot;
   中的 &#39;a&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">[^xyz] </td>
   <td style="FONT-SIZE: 12px">负值字符集合。匹配未包含的任意字符。例如, &#39;[^abc]&#39; 可以匹配 &quot;plain&quot;
   中的&#39;p&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">[a-z] </td>
   <td style="FONT-SIZE: 12px">字符范围。匹配指定范围内的任意字符。例如,&#39;[a-z]&#39; 可以匹配 &#39;a&#39; 到
   &#39;z&#39; 范围内的任意小写字母字符。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">[^a-z] </td>
   <td style="FONT-SIZE: 12px">负值字符范围。匹配任何不在指定范围内的任意字符。例如,&#39;[^a-z]&#39; 可以匹配任何不在
   &#39;a&#39; 到 &#39;z&#39; 范围内的任意字符。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/b </td>
   <td style="FONT-SIZE: 12px">匹配一个单词边界,也就是指单词和空格间的位置。例如, &#39;er/b&#39; 可以匹配&quot;never&quot;
   中的 &#39;er&#39;,但不能匹配 &quot;verb&quot; 中的 &#39;er&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/B </td>
   <td style="FONT-SIZE: 12px">匹配非单词边界。&#39;er/B&#39; 能匹配 &quot;verb&quot; 中的 &#39;er&#39;,但不能匹配
   &quot;never&quot; 中的 &#39;er&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/cx </td>
   <td style="FONT-SIZE: 12px">匹配由 x 指明的控制字符。例如, /cM 匹配一个 Control-M 或回车符。x
   的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 &#39;c&#39; 字符。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/d </td>
   <td style="FONT-SIZE: 12px">匹配一个数字字符。等价于 [0-9]。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/D </td>
   <td style="FONT-SIZE: 12px">匹配一个非数字字符。等价于 [^0-9]。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/f </td>
   <td style="FONT-SIZE: 12px">匹配一个换页符。等价于 /x0c 和 /cL。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/n </td>
   <td style="FONT-SIZE: 12px">匹配一个换行符。等价于 /x0a 和 /cJ。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/r </td>
   <td style="FONT-SIZE: 12px">匹配一个回车符。等价于 /x0d 和 /cM。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/s </td>
   <td style="FONT-SIZE: 12px">匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ /f/n/r/t/v]。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/S </td>
   <td style="FONT-SIZE: 12px">匹配任何非空白字符。等价于 [^ /f/n/r/t/v]。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/t </td>
   <td style="FONT-SIZE: 12px">匹配一个制表符。等价于 /x09 和 /cI。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/v </td>
   <td style="FONT-SIZE: 12px">匹配一个垂直制表符。等价于 /x0b 和 /cK。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/w </td>
   <td style="FONT-SIZE: 12px">匹配包括下划线的任何单词字符。等价于&#39;[A-Za-z0-9_]&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/W </td>
   <td style="FONT-SIZE: 12px">匹配任何非单词字符。等价于 &#39;[^A-Za-z0-9_]&#39;。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/xn </td>
   <td style="FONT-SIZE: 12px">匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,&#39;/x41&#39;
   匹配 &quot;A&quot;。&#39;/x041&#39; 则等价于 &#39;/x04&#39; &amp; &quot;1&quot;。正则表达式中可以使用 ASCII 编码。.</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/num </td>
   <td style="FONT-SIZE: 12px">匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,&#39;(.)/1&#39;
   匹配两个连续的相同字符。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/n </td>
   <td style="FONT-SIZE: 12px">标识一个八进制转义值或一个向后引用。如果 /n 之前至少 n 个获取的子表达式,则
   n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/nm </td>
   <td style="FONT-SIZE: 12px">标识一个八进制转义值或一个向后引用。如果 /nm 之前至少有 nm 个获得子表达式,则
   nm 为向后引用。如果 /nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m
   均为八进制数字 (0-7),则 /nm 将匹配八进制转义值 nm。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/nml </td>
   <td style="FONT-SIZE: 12px">如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值
   nml。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">/un </td>
   <td style="FONT-SIZE: 12px">匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如,
   /u00A9 匹配版权符号 (?)。</td>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#FFFFFF" colspan="2">
    </th>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#f0f0f0" colspan="2">
   <b><font size="2" color="#800000">附录2: JAVASCRIPT正则表达式标志信息解释</font></b></th>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#FFFFFF" colspan="2" height="18">
    </th>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" width="80" bgcolor="#f0f0f0">
   标志 </th>
   <th style="FONT-SIZE: 12px" align="left">描述</th>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">i</td>
   <td style="FONT-SIZE: 12px">忽略大小写标志。如果设置了这个标志,进行匹配比较时,将忽略大小写。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">g</td>
   <td style="FONT-SIZE: 12px">全局标志。如果设置了这个标志,对某个文本执行搜索和替换操作时,将对文本中所有匹配的部分起作用。如果不设置这个标志,则仅搜索和替换最早匹配的内容。</td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">m</td>
   <td style="FONT-SIZE: 12px">多行标志。如果不设置这个标志,那么元字符“^”只与整个被搜索字符串的开始位置相匹配,而元字符“$”只与被搜索字符串的结束位置相匹配。如果设置了这个标志,“^”还可以与被搜索字符串中的“/n”或“/r”之后的位置(即下一行的行首)相匹配,而“$”还可以与被搜索字符串中的“/n”或“/r”之后的位置(即下一行的行尾)相匹配。</td>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#FFFFFF" colspan="2">
    </th>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#f0f0f0" colspan="2">
   <b><font size="2" color="#800000">附录3: JAVASCRIPT正则表达式</font></b><font size="2" color="#800000">创建语法</font></th>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" bgcolor="#FFFFFF" colspan="2" height="18">
    </th>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="left" width="80" bgcolor="#f0f0f0">
   语法 </th>
   <th style="FONT-SIZE: 12px" align="left">描述</th>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px">显式构造函数</td>
   <td style="FONT-SIZE: 12px">语法为:<b>new RegExp(&quot;pattern&quot;[,&quot;flags&quot;]);
   </b><font color="#FF6600"><i>测试程序使用该方法</i></font></td>
  </tr>
  <tr>
   <td style="FONT-SIZE: 12px">隐式构造函数</td>
   <td style="FONT-SIZE: 12px">采用纯文本格式:<b>/pattern/[flags]</b></td>
  </tr>
  <tr bgcolor="#fafafa">
   <td style="FONT-SIZE: 12px"> </td>
   <td style="FONT-SIZE: 12px"> </td>
  </tr>
  <tr>
   <th style="FONT-SIZE: 12px" align="right" bgcolor="#f0f0f0" colspan="2">
   作者:<font color="#0000FF">sunrise_cn</font>&nbsp; Email:<font color="#0000FF">sunrise_cn@163.com
   </font> </th>
   </tr>
 </table>
</div>
</font></b>

</body>

</html> 


       只要将上面的代码保存成htm文件即可成功运行!希望该程序对您学习研究正则表达式有一定的作用。