首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

【工具分享】Javascript正则表达式调试解决思路

2012-02-17 
【工具分享】Javascript正则表达式调试链接:http://www.renrousousuo.com/tools/regex_debug.html截图:第二

【工具分享】Javascript正则表达式调试
链接:http://www.renrousousuo.com/tools/regex_debug.html
截图:
第二版 添加Replace功能


第一版 基本Match功能


有一个专门调试正则工具叫:RegexBuddy,3.2版本大概有10M而且不是免费的
我经常使用的功能其实不多,就是把正则输入,看看能匹配多少
简写为html一个文件就搞定了,这里分享一下:
html小工具开源项目:http://code.google.com/p/htmltools
文件下载链接:http://htmltools.googlecode.com/files/regex_debug.html
源代码:

HTML code
?<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >    <head>        <title>Javascript正则表达式调试工具</title>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <meta name="keywords" content="javascript regex 正则表达式 调试 工具"/>        <meta name="author" content="王集鹄"/>        <style type="text/css">            table{width:100%;}            #text_regex{width:100%;}            #textarea_text{width:100%;height:300px;}            #span_info{color:Red;}            #div_grippie{background-color:#888;border-color:#444;border-style:solid;border-width:0 1px 1px;cursor:s-resize;height:9px;}            .zebra0{background-color:Red;color:Blue;}            .zebra1{background-color:yellow;color:Green;}        </style>    </head>    <body>        <table>            <!--tr><td>TODO : 放置选项</td></tr-->            <tr><td>正则表达式 <span id="span_info"></span></td></tr>            <tr><td>                <input type="text" id="text_regex"/>            </td></tr>            <tr><td>测试文本内容</td></tr>            <tr><td>                <textarea id="textarea_text" cols="*" rows="*"></textarea>                <div id="div_grippie"></div>            </td></tr>            <tr><td>搜索结果 (<span id="span_result">0</span>)</td></tr>            <tr><td>                <div id="div_result"></div>            </td></tr>        </table>        <script type="text/javascript">            /*--            标题:正则表达式调试工具            设计:王集鹄            博客:http://blog.csdn.net/zswang            日期:2010年4月23日            --*/            function text2Html(str) { // 过滤html字符串                return str.replace(/[&"<> \t\n]/g, function() {                    return ({                        "&": "&amp;"                        , "\"": "&quot;"                        , "<": "&lt;"                        , ">": "&gt;"                        , " ": "&nbsp;"                        , "\n": "<br/>"                        , "\t": new Array(5).join("&nbsp;")                    })[arguments[0]];                });            }                        function regexEncode(text) { // 构建正则表达式对象                if (!text) return;                var match = text.match(/^\/(([^\\\/\n\r]*(\\.)*)+)\/([img]{0,3})$/);                if (!match) return;                try {                    return new RegExp(match[1], match[4]);                } catch(ex) {                }            }                        (function() {                var text_regex = document.getElementById("text_regex");                var span_info = document.getElementById("span_info");                var textarea_text = document.getElementById("textarea_text");                var div_result = document.getElementById("div_result");                var span_result = document.getElementById("span_result");                                var lastText, lastRegex;                var doChange = function() {                    var error = "";                    var regex = regexEncode(lastRegex);                    if (!regex) error += " 无效的表达式";                    if (!lastText) error += " 没有测试内容";                    span_info.innerHTML = error;                    if (error) {                        div_result.innerHTML = "";                        span_result.innerHTML = 0;                        return;                    }                    var i = 0;                    var count = 0; // 寻找到的个数                    var html = [];                    var match = regex.exec(lastText);                    var old = -1; // 记录原始序号比较是否发生变化,避免死循环                    while (match && match[0] && old != match.index) {                        if (match.index > i)                            html.push(text2Html(lastText.substring(i, match.index)));                        html.push("<span class=\"zebra");                        html.push(count++ % 2);                        html.push("\">");                        html.push(text2Html(match[0]));                        html.push("</span>");                        i = match.index + match[0].length;                        old = match.index;                        match = regex.exec(lastText);                    }                    if (i < lastText.length) html.push(text2Html(lastText.substr(i)));                    div_result.innerHTML = html.join("");                    span_result.innerHTML = count;                };                textarea_text.onpropertychange = text_regex.onpropertychange = function() {                    if (lastText == textarea_text.value && lastRegex == text_regex.value) return; // 表达式和内容未发生变化                    lastText = textarea_text.value;                    lastRegex = text_regex.value;                    doChange();                };                if (text_regex.addEventListener) {                    text_regex.addEventListener("keypress", text_regex.onpropertychange, false);                    text_regex.addEventListener("keyup", text_regex.onpropertychange, false);                    text_regex.addEventListener("input", text_regex.onpropertychange, false);                }                if (textarea_text.addEventListener) {                    textarea_text.addEventListener("keypress", textarea_text.onpropertychange, false);                    textarea_text.addEventListener("keyup", textarea_text.onpropertychange, false);                    textarea_text.addEventListener("input", textarea_text.onpropertychange, false);                }                text_regex.onpropertychange();            })();        </script>    </body></html> 


我逐步会增加一些实用的工具,如果谁有兴趣参与添加、完善html小工具,可以为你设置“htmltools”项目编辑权限。

[解决办法]
学习学习。。
[解决办法]


犀利哥```


半夜2点发的贴```
[解决办法]
学习了!~
[解决办法]
我正遇到问题呢,帮我解决一下啊,http://topic.csdn.net/u/20100423/08/7196ee1e-2983-4a02-b37d-ffd549973e72.html?57872

谢谢咯!
[解决办法]
作为清洁工的忠实粉丝。一定要支持。。。。。。。。。
[解决办法]
这个工具不错呀。
[解决办法]
强烈支持,一直也想写,
[解决办法]
支持支持
[解决办法]
偶,耶!!!
[解决办法]
学习一下.
[解决办法]
~~~~~~~~jF
[解决办法]
学习了,正则表达式一直是弱项。
[解决办法]
不错,我测试不管输入什么,都显示“无效的表达式”,是输完按回车就执行吗?
[解决办法]
支持一下
[解决办法]
又见伴水哥大作
拜读
[解决办法]
拜读,好好学习
[解决办法]
楼主好人
[解决办法]
我来混点分。。。。。
[解决办法]
灌水。。。
[解决办法]
向高人学习了
[解决办法]
thank you
[解决办法]
伴水的创意是无限的,拜读之后,小小的研究了一下

JScript code
var match = text.match(/^\/(([^\\\/\n\r]*(\\.)*)+)\/([img]{0,3})$/);
[解决办法]
学习 ~
[解决办法]
伴水发错区了吧,要不要我帮你挪帖啊?
[解决办法]
感谢王集鹄

[解决办法]
很好很强大。过客正则神话。偶像,楼主算法神话。我翻出几年前保存的经典代码。居然翻出伴水版计算器,呵呵。
[解决办法]
这个工具不错呀。
[解决办法]
探讨
链接:http://www.renrousousuo.com/tools/regex_debug.html
截图:


有一个专门调试正则工具叫:RegexBuddy,3.2版本大概有10M而且不是免费的
我经常使用的功能其实不多,就是把正则输入,看看能匹配多少
简写为html一个文件就搞定了,这里分享一下:
html小工具开源项目:http://code.google.com/p/……

------解决方案--------------------


谢谢你,非常不错
[解决办法]
这个要收藏
[解决办法]
收藏............
[解决办法]
学习学习
[解决办法]
学习~
[解决办法]
路过.混点可用分
[解决办法]
看一下
[解决办法]
顶上。。。。
[解决办法]
mark
[解决办法]
頂哈····
來學習 ·
[解决办法]
谢谢楼主。
[解决办法]
顶礼膜拜。
[解决办法]
学习 学习
[解决办法]
膜拜中
[解决办法]
正则表达式,一看到就晕了,学习一下
[解决办法]
来看看过客和伴水。。
[解决办法]
java?

[解决办法]
加油 不错
[解决办法]
还不明白,不过以后会用,留个记录,以后用。
[解决办法]
加油 不错
[解决办法]
mark
[解决办法]
新人顶你!支持你!
[解决办法]
这个看着还满深奥的,我正在学习javascript希望楼主多提点好的,资源
[解决办法]
看一看!
[解决办法]
谢了,现在正在学习javascript ,呵呵,这个语言很灵活,就是不太好调试,有没有好的调试方法啊,我都是alert();一行一行的找错误,上百行的,函数相互调用的调试起来有时都快崩溃了
[解决办法]
mark
[解决办法]
作为清洁工的忠实粉丝。一定要支持。。。。。。。。。
[解决办法]
恩,以后学的时候可以用到了,挺有用的。。。
[解决办法]
标记,收藏,学习………………
[解决办法]
强烈支持,一直也想写,
[解决办法]

[解决办法]
呵呵呵,谢谢谢谢
[解决办法]
关注!
[解决办法]
太好了 有没有免费的啊
------解决方案--------------------


学习。。。。。。。。
[解决办法]

[解决办法]
好东西。。。。。。。
[解决办法]
学习。。。。。。。。
[解决办法]
不错!
顶大虾一个了

[解决办法]
果然强悍!
[解决办法]
11231
[解决办法]
sbp_bs_dj
收藏了!!!!!!!!!!
[解决办法]
拿分走人
[解决办法]
RegexTester这个工具还不错啊!
有兴趣的可以去看看
[解决办法]

探讨
学习了,正则表达式一直是弱项。

[解决办法]
人肉搜索
[解决办法]
学习~~
[解决办法]
走路的
[解决办法]
谢了 lz ..
[解决办法]
正则表达式 一直都是弱项 抄走了
[解决办法]
楼主是不是有帮助文档呀1?
[解决办法]
学习了,下来看看~~
[解决办法]
mark.. 很不错
[解决办法]
不知道好不好用...貌似很牛!
[解决办法]
...貌似很牛!
[解决办法]
学习 学习
[解决办法]
谢谢谢谢
[解决办法]
有意思............
[解决办法]
大师又放新作了~~支持支持
[解决办法]
多谢楼主
[解决办法]

[解决办法]
学习 回复内容太短了! 

[解决办法]
awesome!
[解决办法]
学习学习!
[解决办法]
没下载也扣分 垃圾

热点排行