2017-10-13 5 views
-1

私のjavascriptプログラムでは、4つの正規表現を作成し、ユーザーからの入力を求めるためにプロンプ​​トをループで作成しました。ユーザーがデータを入力すると、私が作成したすべての正規表現と照合し、各テスト後に「一致」または「不一致」かどうかを表示し、ユーザーが「停止」を入力して最後の時間をテストして終了するまで繰り返す。 1つのプロンプトが表示され、同じように表示されます。私のコードはほぼ準備ができていますが、私のコードが正しく動作していないためにエラーが発生しています。誰でも私を修正できますか?Javascript:ループ内のプロンプトダイアログボックスと各正規表現に対してテストデータを使用

コード:

<!DOCTYPE html> 
<html> 
<head> 
    <title>lab12</title> 

</head> 
<body bgcolor="#efe862"> 
    <h3 id="txt1"> </h3> 
    <p id= "text1"> </p> 
    <p id="match1"></p> 
    <p id="noMatch1"></p> 

    <p id= "text2"> </p> 
    <p id="match2"></p> 
    <p id="noMatch2"></p> 

    <p id= "text3"> </p> 
    <p id="match3"></p> 
    <p id="noMatch3"></p> 

    <p id= "text4"> </p> 
    <p id="match4"></p> 
    <p id="noMatch4"></p> 

     <script> 
      myFunction(); 
     function myFunction() { 

      var prom = prompt("Enter a text(stop to exit)"); 

      var patt1 = /\w/g; 
      var patt2 = /\[^0-9]/g; 
      var patt3 = /[A-Z][a-z]\s/; 
      var patt4 = /\W\d\d\d\d\d.?\d/; 

      while(prom !== "stop"){ 
       var prom = prompt("Enter a text(stop to exit)"); 
      } 

      do{ 

      document.getElementById("txt1").innerHTML = "The text is: " + prom; 

      document.getElementById("text1").innerHTML = "Match a string that contains atleast one character in A-Z, a-z, 0-9 and _"; 

      if(patt1 || patt2 || patt3 || patt4.test(prom)){ 
      document.getElementById("match1").innerHTML = "It's match"; 
      } 
      else{ 
       document.getElementById("noMatch1").innerHTML = "No match"; 
      } 

      document.getElementById("text2").innerHTML = "Match a string that doesn't contain a number between 0 and 9"; 

      if(patt1 || patt2 || patt3 || patt4.test(prom)){ 
      document.getElementById("match2").innerHTML = "It's match"; 
      } 
      else{ 
       document.getElementById("noMatch2").innerHTML = "No match"; 
      } 

      document.getElementById("text3").innerHTML = "Search for an uppercase letter, followed by one or more lower case letters, followed by a space"; 

      if(patt1 || patt2 || patt3 || patt4.test(prom)){ 
      document.getElementById("match3").innerHTML = "It's match"; 
      } 
      else{ 
       document.getElementById("noMatch3").innerHTML = "No match"; 
      } 

      document.getElementById("text4").innerHTML = "Find a # sign, followed by exactly 5 repeating digits, a period and another digit"; 

      if(patt1 || patt2 || patt3 || patt4.test(prom)){ 
      document.getElementById("match4").innerHTML = "It's match"; 
      } 
      else{ 
       document.getElementById("noMatch4").innerHTML = "No match"; 
      } 

      } 
     } 
     </script> 

</body> 
</html> 

予想される出力:

enter image description here

enter image description here

enter image description here

答えて

1

あなたがたがWROで、do/while loopを使用しようとしています方法。このようにそれを試してみてください:ちょうど1 prom変数宣言(var prom = ...)があること

var prom = prompt("Enter a text(stop to exit)"); 

while (prom !== "stop") { 
    // rest of the function... 
    prom = prompt("Enter a text(stop to exit)"); 
} 

なおは(異なるスコープであなたの例では)新しい変数を宣言するだろうとして、あなたは、コード内で再びこれを行うことはできません、元のpromの可変値は変更されません。

patt1が真であるかどうかをチェックする、if (patt1 || patt2 || patt3 || patt4.test(prom)) {も、正規表現を間違ってチェックしています(これはregexpとして定義されています)。あなたは、正規表現のすべてのためのre.test()を実行したい:このような

if (patt1.test(prom) || patt2.test(prom) || patt3.test(prom) || patt4.test(prom)) {

何かが

<!DOCTYPE html> 
<html> 
<head><title>lab12</title></head> 
<body bgcolor="#efe862"> 
<h3 id="txt1"></h3> 
<p id="text1"></p> 
<p id="match1"></p> 
<p id="noMatch1"></p> 

<p id="text2"></p> 
<p id="match2"></p> 
<p id="noMatch2"></p> 

<p id="text3"></p> 
<p id="match3"></p> 
<p id="noMatch3"></p> 

<p id="text4"></p> 
<p id="match4"></p> 
<p id="noMatch4"></p> 

<script> 
    myFunction(); 

    function myFunction() { 
     var patt1 = /\w/g; 
     var patt2 = /\[^0-9]/g; 
     var patt3 = /[A-Z][a-z]\s/; 
     var patt4 = /\W\d\d\d\d\d.?\d/; 
     var prom = prompt("Enter a text(stop to exit)"); 

     while (prom !== 'stop') { 
      if (prom === "stop") { 
       return; 
      } 

      document.getElementById("txt1").innerHTML = "The text is: " + prom; 
      document.getElementById("text1").innerHTML = "Match a string that contains atleast one character in A-Z, a-z, 0-9 and _"; 

      if (patt1.test(prom)) { 
       document.getElementById("match1").innerHTML = "It's match"; 
      } else { 
       document.getElementById("noMatch1").innerHTML = "No match"; 
      } 

      document.getElementById("text2").innerHTML = "Match a string that doesn't contain a number between 0 and 9"; 

      if (patt2.test(prom)) { 
       document.getElementById("match2").innerHTML = "It's match"; 
      } else { 
       document.getElementById("noMatch2").innerHTML = "No match"; 
      } 

      document.getElementById("text3").innerHTML = "Search for an uppercase letter, followed by one or more lower case letters, followed by a space"; 

      if (patt3.test(prom)) { 
       document.getElementById("match3").innerHTML = "It's match"; 
      } else { 
       document.getElementById("noMatch3").innerHTML = "No match"; 
      } 

      document.getElementById("text4").innerHTML = "Find a # sign, followed by exactly 5 repeating digits, a period and another digit"; 

      if (patt4.test(prom)) { 
       document.getElementById("match4").innerHTML = "It's match"; 
      } else { 
       document.getElementById("noMatch4").innerHTML = "No match"; 
      } 

      prom = prompt("Enter a text(stop to exit)"); 
     } 
    } 
</script> 

</body> 
</html> 
+0

は、私は、関数の機能や外でこれを書くべきでしょうか? – pari

+0

私はまだ得ていません。コードを書いていただけますか?ありがとう – pari

+0

re.test()の適用方法は? – pari

関連する問題