2017-01-19 18 views
-4

我需要驗證此測試用例的文本框。如何使用0至59驗證文本字段,它將允許1,2,3,*/59

  1. 它將使0到59之間沒有字符,特殊字符不允許除*,/
  2. 它將使1,2,3,4但1,2,3,60不應該讓
  3. 它將使/59或1,2,3,4,/59,但1,2,3,5,*/59/19不應允許

我想,

var input = document.getElementById('configMinute').value;  

      //console.info("Else Called"); 
       var slashPattern = "/"; 
       var specialChars = "<>@!#$%^&*()_+[]{}?:;|'\"\\,./~`-="; 
       var getStringCheck = checkSpecialChar(input,specialChars); 

       if(getStringCheck==true){ 

       // string = 1,2,3,*/10 
       // ,*/ 

        var getStringValues = input.split(',');  

        var notAllowedCharPattern = "<>@!#$%^&()_+[]{}?:;|'\"\\.~`-="; 

        var allowedChar = checkSpecialChar(input,notAllowedCharPattern); 

         if(allowedChar==false){ 
         console.info(getStringValues); 

          getStringValues.forEach(function(element){ 
          //string = 1 2 3 */10 
           var validateSlash = checkSpecialChar(element,slashPattern);  

           if(element.startsWith("*")==true){ 
            var newInput = element.split('/'); 
            console.info("newInput: "+ element); 
            newInput.forEach(function(element) { 
             console.info("newInput Foreach: "+ element); 
             if(element=='*' || (element>=0 && element <=59)){ 
              return true;      
             } 
             else{ 
              alert("Please enter numbers between 0 to 59 or '*' ==>1"); 
              document.getElementById('configMinute').focus(); 
              return false; 

             } 
            });       

           }else{ 
            console.info("* Else: "+ element); 
            if(element=='*' || (element>=0 && element <=59)){ 
             return true;      
            }else{ 
             alert("Please enter numbers between 0 to 59 or '*' ==>1"); 
             document.getElementById('configMinute').focus(); 
             return false; 

            } 
           }    

          }); 
         }else{ 
          alert ("File name has special characters \nAllowed Characters are *,/ ==>3"); 
          document.getElementById('configMinute').focus(); 
          return false; 
         }   
       }else if(input == '*' || (input>=0 && input <=59)){ 
        return true;   
       }else{ 
        alert("Please enter numbers between 0 to 59 or '*' ==>4"); 
        document.getElementById('configMinute').focus(); 
        return false; 
       } 

在此先感謝

+0

你試過*什麼*? – Li357

+0

我驗證了前兩個例子,第三個例子我不能運行 – Phoenix

回答

0

你可以嘗試像

(?:(?:^|,)(?:[1-5]?\d|\*?\/59)\b)+$ 

正則表達式這行(^)或,後跟一個數字,0-59,或/59可選的開頭前面有一個相匹配*。然後這個模式可以重複任意次數,直到行結束。

See it here at regex101

+0

它有問題,測試用例:1)59 2)1,2 3)1,2,*/59 4)*/59 5)* – Phoenix

+0

,你可以看到[這裏](https://regex101.com/r/D7y8hH/4),它**可以和前四個一起工作。然而,第五個問題沒有提到,因此不起作用;) – ClasG

+0

嗨提到但你不明白,或者我沒有說清楚。無論如何,你能幫我完成 – Phoenix

相關問題