• 正则表达式测试


    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>正则表达式测试</title>
    <link rel="stylesheet" href="bootstrap.min.css" type="text/css">
    <script src="jquery.min.js" type="text/javascript">
    </script>
    <style type="text/css">
    body {
        margin-top: 30px;
    }
    
    .label {
        margin: 0px 3px;
    }
    </style>
    </head>
    <body>
    <div class="container">
    <div class="row">
    <div class="col-sm-12">
    <div class="alert alert-danger hide" id="alert-box"></div>
    <div class="form-group">
    <label for="input-text">文本</label>
    <input type="text" class="form-control" id="input-text"
        placeholder="待匹配文本">
    </div>
    <label for="inputRegex">表达式</label>
    <div class="input-group">
    <input type="text" class="form-control" id="input-regex"
        placeholder="'表达式' 或 '/表达式/选项'">
    <span class="input-group-btn">
    <button class="btn btn-default" id="test-button"
        type="button">测试!</button>
    </span>
    </div>
    </div>
    </div>
    <div class="row">
    <h3>匹配结果</h3>
    <div class="col-sm-12">
    <div class="well well-lg" id="results-box"></div>
    </div>
    </div>
    </div>
    <script type="text/javascript">
    var textbox = $("#input-text");
    var regexbox = $("#input-regex");
    var alertbox = $("#alert-box");
    var resultsbox = $("#results-box");
    
    $("#test-button").click(function () {
        clearResultsAndErrors();
        var text = textbox.val();
        var regex = regexbox.val();
    
        if ("" === text) {
            err("需要输入匹配的文本!");
        } else if ("" === regex) {
            err("没正则表达式怎么玩?");
        } else {
            regex = createRegex(regex);
            if (!regex) {
                return;
            }
    
            var results = getMatches(regex, text);
            if (results.length>0 && null!==results[0]) {
                var html = getMatchesCountString(results);
                html += getResultsString(results, text);
                resultsbox.html(html);
            } else {
                resultsbox.text("无匹配!");
            }
        }
    });
    
    function clearResultsAndErrors() {
        resultsbox.text("");
        alertbox.addClass("hide").text("");
    }
    
    function err(str) {
        alertbox.removeClass("hide").text(str);
    }
    
    function createRegex(regex) {
        var rc = false;
        try {
            if ("/" === regex.charAt(0)) {
                var rgx = regex.split("/");
                if (rgx.length != 3) {
                    throw SyntaxError("确认表达式的格式对了么?");
                }
    
                rgx.shift();
                var flags = rgx.pop();
                rc = new RegExp(rgx, flags);
            } else {
                rc = new RegExp(regex, "g");
            }
        } catch (e) {
            err("表达式写对了么或检查选项?");
        }
    
        return rc;
    }
    
    function getMatches(regex, text) {
        var results = [];
        var result = null;
    
        if (regex.global) {
            while (1) {
                result = regex.exec(text);
                if (null === result) {
                    break;
                }
    
                results.push(result);
            }
        } else {
            results.push(regex.exec(text));
        }
    
        return results;
    }
    
    function getMatchesCountString(results) {
        return "<p>发现&nbsp;" + results.length + "&nbsp;个匹配</p>";
    }
    
    function getResultsString(results, text) {
        for (var i = results.length-1; i>=0; i--) {
            var result = results[i];
            var match  = result.toString();
            var prefix = text.substr(0, result.index);
            var suffix = text.substr(result.index + match.length);
            text = prefix + '<span class="label label-info">' + match
                + '</span>' + suffix;
        }
    
        return "<h4>" + text + "</h4>";
    }
    </script>
    </body>
    </html>
    
    

    本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。

    博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。

    博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个无耻的文档搬运工!

  • 相关阅读:
    php 三级连动及 php+ajax的调试方法
    ajax传值 乱码问题
    ajax传值给php
    php连接mssql pdo
    语法正确的情况下报错的原因
    Mina传递对象
    Mina小例子
    基于MINA构建简单高性能的NIO应用
    点与不规则图形关系判断
    Postman----基础使用篇(没有接口文档的情况下如何着手做接口测试)
  • 原文地址:https://www.cnblogs.com/Dewumu/p/14414790.html
Copyright © 2020-2023  润新知