aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7163|回复: 4

Javascript正则表达式测试工具

[复制链接]

42

主题

628

回帖

3765

积分

版主

积分
3765
发表于 2012-11-28 16:13:15 | 显示全部楼层 |阅读模式
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form( bottom=401;scroll=1;text="Javascript正则表达式测试工具";right=676;parent=...)
  4. winform.add(  )
  5. /*}}*/

  6. import web.form;
  7. var wb = web.form( winform );

  8. wb.html = /**
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  10. <html>
  11. <head>
  12.     <title>Javascript 测试工具 </title>
  13.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  14.     <script>
  15.         //本工具原作者:cm4ever
  16.         
  17.         if (!document.all) {   
  18.             //兼容Mozilla的innerText
  19.             HTMLElement.prototype.__defineSetter__("innerText", function (sText) {
  20.                 this.innerHTML = sText.replace(/\&/g, "&")
  21.                              .replace(/>/g, ">")
  22.                              .replace(/</g, "<")
  23.                              .replace(/ /g, " ")
  24.                              .replace(/\n/g, "<BR/>");
  25.             });
  26.         }

  27.         /**
  28.         * Method 测试正则表达式函数
  29.         * @param method 接收到的正则表达式类的方法
  30.         */
  31.         function check(method) {
  32.             // 将用户输入的正则表达式的标志转换为小写
  33.             document.getElementById("flags").value = document.getElementById("flags").value.toLowerCase();

  34.             // 如果含有不是g、i、m的字符, 则 提示并返回
  35.             if (document.getElementById("flags").value.search(/[^g|i|m]/g) != -1) {
  36.                 alert("flags only can be g, i, m");
  37.                 return;
  38.             }

  39.             // 利用用户输入的字符串和标志建立正则表达式
  40.             var re = new RegExp(document.getElementById("regex").value, document.getElementById("flags").value);

  41.             // 获得并显示生成的正则表达式的字符串形式
  42.             document.getElementById("destRegex").innerText = re.toString() + ' ';

  43.             // 定义 返回值
  44.             var cr;

  45.             ex = "new RegExp('" + document.getElementById("regex").value + "', '" + document.getElementById("flags").value + "').";

  46.             // 根据用户选择的方法, 进行相应的调用
  47.             switch (method) {
  48.                 case '0': // 正则表达式的 exec 方法
  49.                     cr = re.exec(document.getElementById("string").value);
  50.                     ex = ex + "exec('" + document.getElementById("string").value + "')";
  51.                     break;

  52.                 case '1': // 正则表达式的 test 方法
  53.                     cr = re.test(document.getElementById("string").value);
  54.                     ex = ex + "test('" + document.getElementById("string").value + "')";
  55.                     break;

  56.                 case '2': // 字符串类的 match 方法
  57.                     cr = document.getElementById("string").value.match(re);
  58.                     ex = "'" + document.getElementById("string").value + "'.match(" + re.toString() + ")";
  59.                     break;

  60.                 case '3': // 字符串类的 search 方法
  61.                     cr = document.getElementById("string").value.search(re);
  62.                     ex = "'" + document.getElementById("string").value + "'.search(" + re.toString() + ")";
  63.                     break;

  64.                 case '4': // 字符串类的 replace 方法
  65.                     cr = document.getElementById("string").value.replace(re, '<thinkbase.net>');
  66.                     ex = "'" + document.getElementById("string").value + "'.replace(" + re.toString() + ", '<thinkbase.net>')";
  67.                     break;

  68.                 case '5': // 字符串类的 split 方法
  69.                     cr = document.getElementById("string").value.split(re);
  70.                     ex = "'" + document.getElementById("string").value + "'.split(" + re.toString() + ")";
  71.                     break;
  72.             }

  73.             // 获得并显示表达式
  74.             document.getElementById("expression").innerText = ex;

  75.             // 获得并显示计算结果的类型
  76.             document.getElementById("returnType").innerText = typeof (cr);

  77.             // 定义结果
  78.             var result = '';

  79.             if (cr != null && typeof (cr) == 'object' && cr.length != null) // 如果计算结果是一个数组, 则取出所有数组的值
  80.             {
  81.                 for (i = 0; i < cr.length; i++) {
  82.                     result += "array[" + i + "] = '" + cr[ i ] + "'\n";
  83.                 }
  84.             }
  85.             else
  86.                 if (cr != null) // 如果计算结果不为null, 则取出计算结果的值
  87.                 {
  88.                     result = cr;
  89.                 }

  90.             // 获得并显示结果
  91.             document.getElementById("matchResult").innerText = result + ' ';

  92.             // 获得并显示正则表达式的lastIndex属性
  93.             document.getElementById("lastIndex").innerText = re.lastIndex + ' ';
  94.         }
  95.     </script>
  96.     <style>
  97.         input
  98.         {
  99.             background: ffffff;
  100.             height: 21;
  101.             padding-left: 3px;
  102.             font-size: 9pt;
  103.             font-family: Courier New;
  104.             border: 1px solid #000000;
  105.         }
  106.         textarea
  107.         {
  108.             background: ffffff;
  109.             padding-left: 3px;
  110.             font-size: 9pt;
  111.             font-family: Courier New;
  112.             border: 1px solid #000000;
  113.         }
  114.         body
  115.         {
  116.             font-family: Verdana;
  117.             font-size: 9pt;
  118.             line-height: 170%;
  119.         }
  120.     </style>
  121. </head>
  122. <body align="CENTER">
  123.     <form method="post" action="" align="CENTER">
  124.     <table width="100%" border="1" cellpadding="1" cellspacing="0" bordercolorlight="#C0C0C0"
  125.         bordercolordark="#FFFFFF" style="font-family: Verdana; font-size: 9pt">
  126.         <tr>
  127.             <td colspan="2" align="CENTER" style="font-size: 10.5pt; font-weight: bold">
  128.                 Javascript 正则表达式 测试工具
  129.             </td>
  130.         </tr>
  131.         <tr>
  132.             <td width="30%">
  133.                 正则表达式:
  134.             </td>
  135.             <td>
  136.                 <input name="regex" type="text" size="50" id="regex">
  137.             </td>
  138.         </tr>
  139.         <tr>
  140.             <td>
  141.                 选项
  142.             </td>
  143.             <td>
  144.                 <input name="flags" type="text" size="50" id="flags" id="flags">
  145.                 <script>
  146.                     function changeFlag(chk) {
  147.                         var flagsEle = document.getElementById("flags")
  148.                         var flags = flagsEle.value;
  149.                         flags = flags.replace(/[^gim]/g, "");
  150.                         flags = flags.replace(chk.value, "");
  151.                         if (chk.checked)
  152.                             flags = flags + chk.value;

  153.                         flagsEle.value = flags;
  154.                     }
  155.                 </script>
  156.                 <br />
  157.                 <input type="checkbox" name="flags-g" value="g" onclick="changeFlag(this)"/><lable
  158.                     for="m">全局</lable>
  159.                 <input type="checkbox" name="flags-i" value="i" onclick="changeFlag(this)" /><lable
  160.                     for="m">忽略大小行</lable>
  161.                 <input type="checkbox" name="flags-m" value="m" onclick="changeFlag(this)" /><lable
  162.                     for="m">多行匹配</lable>
  163.             </td>
  164.         </tr>
  165.         <tr>
  166.             <td>
  167.                 测试字符串:
  168.             </td>
  169.             <td>
  170.                 <textarea name="string" rows="8" id="string" style="width: 90%"></textarea>
  171.             </td>
  172.         </tr>
  173.         <tr>
  174.             <td>
  175.                 选择正则函数:
  176.             </td>
  177.             <td>
  178.                 <select name="select" id="select" style="font-family: Verdana;">
  179.                     <option value="0">exec</option>
  180.                     <option value="1">test</option>
  181.                     <option value="2">match</option>
  182.                     <option value="3">search</option>
  183.                     <option value="4">replace</option>
  184.                     <option value="5">split</option>
  185.                 </select>
  186.                 <input value='运行测试' type="button" onclick="javascript:check(document.getElementById('select').value);"
  187.                     style="background: #D6E7EF; border-bottom: 1px solid #104A7B; border-right: 1px solid #104A7B
  188.                       border-left: 1px solid #AFC4D5; border-top: 1px solid #AFC4D5; color: #000066;
  189.                     font-family: Verdana; 19px; text-decoration: none; cursor: hand; width: 60px">
  190.             </td>
  191.         </tr>
  192.         <tr>
  193.             <td>
  194.                 Javascript正则表达式:
  195.             </td>
  196.             <td style="color: blue" id="destRegex">
  197.                  
  198.             </td>
  199.         </tr>
  200.         <tr>
  201.             <td>
  202.                 生成的测试代码:
  203.             </td>
  204.             <td style="color: blue" id="expression">
  205.                  
  206.             </td>
  207.             <tr>
  208.                 <tr>
  209.                     <td>
  210.                         返回值类型:
  211.                     </td>
  212.                     <td style="color: darkred" id="returnType">
  213.                         
  214.                     </td>
  215.                 </tr>
  216.                 <tr>
  217.                     <td>
  218.                         返回值:
  219.                     </td>
  220.                     <td style="color: red" id="matchResult">
  221.                         
  222.                     </td>
  223.                 </tr>
  224.                 <tr>
  225.                     <td>
  226.                         匹配串结束位置:
  227.                     </td>
  228.                     <td style="color: red" id="lastIndex">
  229.                         
  230.                     </td>
  231.                 </tr>
  232.     </table>
  233.     <a href="http://www.w3school.com.cn/js/jsref_obj_regexp.asp" target="_blank">javascript正则表达式 语法参考 </a>
  234.     <a href="http://bbs.aardio.com">aardio编程语言</a>
  235.     </form>
  236. </body>
  237. </html>
  238. **/

  239. winform.show();
  240. win.loopMessage();
复制代码

0

主题

5

回帖

78

积分

荣誉会员

积分
78
发表于 2012-11-28 18:17:42 | 显示全部楼层
感谢分享

9

主题

193

回帖

1297

积分

四级会员

积分
1297
发表于 2012-11-28 20:48:08 | 显示全部楼层
谢谢

19

主题

294

回帖

1945

积分

新手入门

积分
1945
发表于 2012-11-28 22:14:11 | 显示全部楼层
感谢分享。代码高亮插件不错。

8

主题

110

回帖

904

积分

三级会员

积分
904
发表于 2012-12-14 23:10:13 | 显示全部楼层
感谢分享
学习了
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-3-20 02:48 , Processed in 0.058744 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表