检查一下代码

检查一下代码

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <title>正则表达式测试工具</title>

    <style>
        dl,dd{
            margin: 0;
            padding: 0;
        }
        /* 清除浮动 */
        .cf{
            zoom: 1;
        }
        .cf::after{
            display: block;
            content: '';
            clear: both;
        }
        .wrap{
            width: 1000px;
            margin: 100px auto;
        }
        .title {
            color: #777;
            font-size: 30px;
            text-align: center;
        }
        #regexp {
            float: left;
            width: 650px;
            font-size: 16px;
        }
        #regexp>.textbox {
            width: 638px;
            height: 138px;
            border: 1px solid #ccc;
            border-radius: 5px;
            padding: 5px;
            resize: none;
        }
        #regexp>.onlyread {
            background-color: #ccc;
        }
        #regexp>p>.textField {
            width: 178px;
            padding: 5px;
            border: 1px solid #ccc;
        }
        #reglist{
            float: right;
            width: 320px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #f5f5f5;
            padding: 20px 0;
        }
        #reglist dt{
            margin-bottom: 10px;
            text-indent: 20px;
            color: #999;
            font-size: 18px;
            font-weight: bold;
        }
        #reglist dd{
            height: 40px;
            line-height: 40px;
            text-indent: 20px;
        }
        #reglist a{
            display: block;
            color: #08c;
            text-decoration: none;
        }
        #reglist a:hover{   
            color: #005580;
            background-color: #eee;
        }
    </style>

</head>

<body>
    <div class="wrap cf">
        <h1 class="title">正则表达式测试工具</h1>
        <div id="regexp"> 
            <textarea id="userText" class="textbox" placeholder="在此输入待匹配的文本"></textarea>
            <p>
                正则表达式:<input type="text" id="userRegExp" class="textField">
                <input type="checkbox" name="userModifier" value="i">忽略大小写
                <input type="checkbox" name="userModifier" value="g">全局匹配
                <input type="checkbox" name="userModifier" value="m">多行匹配
                <input type="button" id="matchingBtn" value="测试匹配">
            </p>
            匹配结果:
            <div id="matchingResult" class="textbox onlyread"></div>
            <p>
                替换文本:<input type="text" id="userReplaceText" class="textField" placeholder="在此输入替换文本">
                <input type="button" id="replaceBtn" value="替换">
            </p>
            替换结果:
            <div id="replaceResult" class="textbox onlyread"></div>
        </div>
        <dl id="reglist">
            <dt>常用正则表达式</dt>
            <dd><a href="javascript:;" title="/\u4e00-\u9a5f/">匹配中文字符</a></dd>
            <dd><a href="javascript:;" title="/[1-9]\d{4,}/">匹配QQ字符</a></dd>
            <dd><a href="javascript:;" title="/^[\u4e00-\u9fa5\w]{2,18}$/">匹配昵称字符</a></dd>
            <dd><a href="javascript:;" title="/^\S{6,16}$/">匹配密码字符</a></dd>
            <dd><a href="javascript:;" title="/-([a-z])/ig">匹配转驼峰字符</a></dd>
            <dd><a href="javascript:;" title="/<[^>]+>/g">匹配HTML标签</a></dd>
            <dd><a href="javascript:;" title="/^(?:\w+\.)*\w+@(?:\w+\.)+[a-z]$/i">匹配邮箱字符</a></dd>
        </dl>
    </div>
    <script type="text/javascript">
        //获取元素对象
        var getElem = {
            userText: document.getElementById("userText"),
            userRegExp: document.getElementById("userRegExp"),
            userModifier: document.getElementsByName("userModifier"),
            matchingBtn: document.getElementById("matchingBtn"),
            matchingResult: document.getElementById("matchingResult"),
            userReplaceText: document.getElementById("userReplaceText"),
            replaceBtn: document.getElementById("replaceBtn"),
            replaceResult: document.getElementById("replaceResult"),
            reglists: document.getElementById("reglist").getElementsByTagName('a'),
        }
        //判断是否输入的方法
        var decide = {
            IfuserText: function () {
                if (!getElem.userText.value) {
                    alert("请输入待匹配的文本!");
                    getElem.userText.focus();
                }
            },
            IfuserRegExp: function () {
                if (!getElem.userRegExp.value) {
                    alert("请输入待输入的正则!");
                    getElem.userRegExp.focus();
                }
            },
            IfuserReplaceText: function () {
                if (!getElem.userReplaceText.value) {
                    alert("请输入要替换成的文本!");
                    getElem.userReplaceText.focus();
                }
            }
        }
        // 判断是否有添加img
        var pattern,
            modifier = "";
        for (var i = 0; i < getElem.userModifier.length; i++) {
            getElem.userModifier[i].onclick = function () {
                modifier = "";
                for (var j = 0; j < getElem.userModifier.length; j++) {
                    if (getElem.userModifier[j].checked) {
                        modifier += getElem.userModifier[j].value;
                    }
                }
            }
        }
        // 点击匹配按钮的事件
        getElem.matchingBtn.onclick = function () {
            decide.IfuserText();
            decide.IfuserRegExp();
            pattern = new RegExp("(" + getElem.userRegExp.value + ")", modifier);
            getElem.matchingResult.innerHTML = pattern.exec(getElem.userText.value) ? getElem.userText.value.replace(pattern, "<span style='background-color:yellow'>$1</span>") : "(没有匹配)";
        }
        // 点击替换按钮的事件
        getElem.replaceBtn.onclick = function () {
            decide.IfuserText();
            decide.IfuserRegExp();
            decide.IfuserReplaceText();
            pattern = new RegExp("(" + userRegExp.value + ")", modifier);
            getElem.replaceResult.innerHTML = pattern.exec(getElem.userText.value) ? getElem.userText.value.replace(pattern, "<span style='color:red'>" + getElem.userReplaceText.value + "</span>") : "(没有匹配)";
        }
        // 侧边栏正则匹配
        for(var i = 0; i < getElem.reglists.length;i++){
            getElem.reglists[i].onclick = function(){
                getElem.userRegExp.value = this.title;
            };
        }   
    </script>
</body>

</html>

没有匹配结果是怎么回事?  能帮我优化一下代码吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕糖 2019-10-06 11:09:39

同学你好,这个这样写就是可以的哦。

祝学习愉快!

好帮手慕糖 2019-09-30 11:25:23

同学你好,标签中的title这里的正则,不需要使用//哦,例:

http://img1.sycdn.imooc.com//climg/5d91758509e3b9be13540456.jpg

希望能帮助到你,祝学习愉快!

  • var pattern, pattern = new RegExp("(" + getElem.userRegExp.value + ")", modifier); pattern = new RegExp("(" + getElem.userRegExp.value + ")", modifier); 这3句该如何优化呢?
    2019-09-30 15:12:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师