2017-08-10 78 views
2

我稱「參數」,這將作爲一個參數如何限制多個通配符搜索?

param = { "prodNbr":["ABC1%", "DEF1%], "skuNbr":["MNO1%","KLM2%"], "prodCd":[]} 

我需要驗證某些條件

  1. 我怎樣才能限制多個%來傳遞的API調用的對象(外卡搜索)在此對象(用戶只能與一個%搜索。如果有多個%使用,它應該拋出錯誤)

  2. 最低三字應搜索是否需要智慧H%(通配符搜索)和%後應3個或更多字符(如:ABC%ABC1%)請幫忙

回答

0

1)一個簡單的方法是檢查是否第一幽靈的指數是從上一個不同: str.indexOf("%") != str.lastIndexOf("%");

2)只是檢查第一幽靈在指數3或gretear

所以:

if (str.includes("%")) { 
    if (str.indexOf("%") != str.lastIndexOf("%") || str.indexOf("%") < 3) { 
     alert("error"); 
    } else {} 
} 
+0

感謝Juvian爲您的快速回復。非常感謝 – Bijil

+0

可以說我將對象參數的值轉換爲數組 [「ABC1%,DEF1%,MNO1%,KLM2%」] 如何檢查%不會出現一次以上(意思是,如果一個元素包含%,該數組中沒有其他元素應該包含%。在這種情況下,4個元素具有%,這應該會引發錯誤) – Bijil

+0

@Bijil嗯,取決於,單個元素是否可以超過1%?如果沒有,你可以檢查字符串化版本是否有%str = array.join(',') – juvian

0

這可能不是最好的解決方案,

<script src="jquery.min.js"></script> 
<script type="text/javascript"> 

    function isValid(p) { 
     var valid = true; 
     for (var key in p) { 
      if (p.hasOwnProperty(key)) { 
       if ($.isArray(p[key])) { 
        p[key].forEach(function (item) { 
         if (item.match(/\%/g)) { 
          if (item.match(/\%/g).length >= 2) { 
           valid = false; 
           return valid; 
          } 
          else if (item.indexOf("%") > -1) { 
           if (item.length < 4) { 
            valid = false; 
            return valid; 
           } 
          } 
          if (item.lastIndexOf("%") != (item.length - 1)) { 
           valid = false; 
           return valid; 
          } 
         } 
        }); 
       } 
      } 
     } 
     return valid; 
    } 
    $(document).ready(function() { 

     var valid = true; 
     var param = { "prodNbr": ["ABC1%", "DERE%"], "skuNbr": ["MNO1%", "KLM2%"], "prodCd": [], "prodCd1": "1" }; 

     console.log(isValid(param)); //if false conditions not met. 
    }); 

</script> 
+0

非常感謝。一旦我明天到任,請讓我在我的申請中試用。將更新你的輸出:) – Bijil