老师说的那个简化,我试了一下,能实现但不知道是否标准,请老师帮忙看下

来源:3-43 利用replace方法完善正则测试工具

Elisa呀

2020-02-20 22:08:10

请老师帮忙看下

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

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

  <style>

    #regexp{

      width: 650px;

      margin: 100px auto;

      font-size: 14px;

    }

    #regexp .title{

      color:#777;

      font-size:24px;

      text-align: center;      

    }

    #regexp .textbox{

      width: 638px;

      height: 150px;

      border: 1px solid #ccc;

      border-radius:5px;

      padding:5px;

      resize: none;

    }

    #regexp .readonly{

      background-color: #eee;

    }

    #regexp .textfield{

      width: 215px;

      padding:5px;

      border:1px solid #ccc;

    }

  </style>

</head>

<body>

  <div id="regexp">

    <h1 class="title">正则表达式测试工具</h1>

    <textarea id="userText" class="textbox" placeholder="在此输入待匹配的文本"></textarea>

        <p>

      正则表达式:

      <input type="text" id="userRegExp"class="textfield" placeholder="在此输入正则表达式">

      <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 readonly"></div>

     <p>

      替换表达式:

      <input type="text" id="userReplaceText"class="textfield" placeholder="在此输入替换表达式">

      <input type="button" id="replaceBtn"value="测试替换"/>

    </p>

    替换结果:

    <div id="replaceResult" class="textbox readonly"></div>

    <!--<textarea id="matchingResult" class="textbox" disabled="disabled"></textarea>-->

  </div>

 <script>

  var 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');

  var pattern;


  var modifier='';

  for(var i=0;i<userModifier.length;i++){

    userModifier[i].onclick=function(){

      modifier='';//清空重新计算,不然会累积

      for(var j=0;j<userModifier.length;j++){

        if(userModifier[j].checked){

          modifier+=userModifier[j].value;

        }

      }

    }

  }

  //点击正则匹配按钮

  function check(tex,ale){

    if(!tex.value){

      alert(ale)

      tex.focus();

      return;

    }

  }

  matchingBtn.onclick=function(){

    check(userText,'请输入待匹配的文本!');

    check(userRegExp,'请输入正则表达式!');

  }

  // matchingBtn.onclick=function(){

  //   if(!userText.value){

  //     alert('请输入待匹配的文本!');

  //     userText.focus();

  //     return;

  //   }

  //   if(!userRegExp.value){

  //     alert('请输入正则表达式!');

  //     userRegExp.focus();

  //     return;

  //   }

    pattern=new RegExp('('+userRegExp.value+')',modifier);

    matchingResult.innerHTML=pattern.exec(userText.value)?userText.value.replace(pattern,'<span style="background-color:yellow">$1</span>'):'(没有匹配)';

  }

  //点击替换按钮

  replaceBtn.onclick=function(){

    check(userText,'请输入待匹配的文本!');

    check(userRegExp,'请输入正则表达式!');

    check(userReplaceText,'请输入要替换成的文本!')

  }

  // replaceBtn.onclick=function(){

  //   if(!userText.value){

  //     alert('请输入待匹配的文本!');

  //     userText.focus();

  //     return;

  //   }

  //   if(!userRegExp.value){

  //     alert('请输入正则表达式!');

  //     userRegExp.focus();

  //     return;

  //   }

  //   if(!userReplaceText.value){

  //     alert('请输入要替换成的文本!');

  //     userRegExp.focus();

  //     return;

  //   }

    pattern=new RegExp('('+userRegExp.value+')',modifier);

    replaceResult.innerHTML=userText.value.replace(pattern,'<span style="color:red">'+userReplaceText.value+'</span>');

  }

 </script> 

</body>

</html>


写回答

2回答

好帮手慕星星

2020-02-21

同学你好,代码中问题如下:

1、标点符号需要是英文状态下的

2、不需要再写一个匹配按钮的点击事件,在原来地方修改就好

参考:

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

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

    <style>
        #regexp {
            width: 650px;
            margin: 100px auto;
            font-size: 14px;
        }
        
        #regexp .title {
            color: #777;
            font-size: 24px;
            text-align: center;
        }
        
        #regexp .textbox {
            width: 638px;
            height: 150px;
            border: 1px solid #ccc;
            border-radius: 5px;
            padding: 5px;
            resize: none;
        }
        
        #regexp .readonly {
            background-color: #eee;
        }
        
        #regexp .textfield {
            width: 215px;
            padding: 5px;
            border: 1px solid #ccc;
        }
    </style>

</head>

<body>

    <div id="regexp">

        <h1 class="title">正则表达式测试工具</h1>

        <textarea id="userText" class="textbox" placeholder="在此输入待匹配的文本"></textarea>

        <p>

            正则表达式:

            <input type="text" id="userRegExp" class="textfield" placeholder="在此输入正则表达式">

            <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 readonly"></div>

        <p>

            替换表达式:

            <input type="text" id="userReplaceText" class="textfield" placeholder="在此输入替换表达式">

            <input type="button" id="replaceBtn" value="测试替换" />

        </p>

        替换结果:

        <div id="replaceResult" class="textbox readonly"></div>

        <!--<textarea id="matchingResult" class="textbox" disabled="disabled"></textarea>-->

    </div>

    <script>
        var 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');

        var pattern;



        var modifier = '';

        for (var i = 0; i < userModifier.length; i++) {

            userModifier[i].onclick = function() {

                modifier = ''; //清空重新计算,不然会累积

                for (var j = 0; j < userModifier.length; j++) {

                    if (userModifier[j].checked) {

                        modifier += userModifier[j].value;

                    }

                }

            }

        }

        //点击正则匹配按钮

        function check(tex, ale) {
            console.log(tex)

            if (!tex.value) {

                alert(ale)

                tex.focus();

                return;

            }

        }

        // matchingBtn.onclick = function() {


        // }

        matchingBtn.onclick = function() {
            // check(userText, '请输入待匹配的文本!');
            check(userText, '请输入待匹配的文本!');

            // check(userRegExp, '请输入正则表达式!');
            check(userRegExp, '请输入正则表达式!');

            //   if(!userText.value){

            //     alert('请输入待匹配的文本!');

            //     userText.focus();

            //     return;

            //   }

            //   if(!userRegExp.value){

            //     alert('请输入正则表达式!');

            //     userRegExp.focus();

            //     return;

            //   }

            pattern = new RegExp('(' + userRegExp.value + ')', modifier);

            matchingResult.innerHTML = pattern.exec(userText.value) ? userText.value.replace(pattern, '<span style="background-color:yellow">$1</span>') : '(没有匹配)';

        }

        //点击替换按钮

        replaceBtn.onclick = function() {

            // check(userText, '请输入待匹配的文本!');
            check(userText, '请输入待匹配的文本!');

            // check(userRegExp, '请输入正则表达式!');
            check(userRegExp, '请输入正则表达式!');

            check(userReplaceText, '请输入要替换成的文本!')

        }

        replaceBtn.onclick = function() {

            //   if(!userText.value){

            //     alert('请输入待匹配的文本!');

            //     userText.focus();

            //     return;

            //   }

            //   if(!userRegExp.value){

            //     alert('请输入正则表达式!');

            //     userRegExp.focus();

            //     return;

            //   }

            //   if(!userReplaceText.value){

            //     alert('请输入要替换成的文本!');

            //     userRegExp.focus();

            //     return;

            //   }

            pattern = new RegExp('(' + userRegExp.value + ')', modifier);

            replaceResult.innerHTML = userText.value.replace(pattern, '<span style="color:red">' + userReplaceText.value + '</span>');

        }
    </script>

</body>

</html>

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

0

Elisa呀

提问者

2020-02-20

不对,是我刷新错页面了,弹不出来TAT,

请问这个要怎么简化呢?还请老师帮忙看下

0

0 学习 · 14456 问题

查看课程