我稱「參數」,這將作爲一個參數如何限制多個通配符搜索?
param = { "prodNbr":["ABC1%", "DEF1%], "skuNbr":["MNO1%","KLM2%"], "prodCd":[]}
我需要驗證某些條件
我怎樣才能限制多個%來傳遞的API調用的對象(外卡搜索)在此對象(用戶只能與一個
%
搜索。如果有多個%
使用,它應該拋出錯誤)最低三字應搜索是否需要智慧H%(通配符搜索)和
%
後應3個或更多字符(如:ABC%
或ABC1%
)請幫忙
我稱「參數」,這將作爲一個參數如何限制多個通配符搜索?
param = { "prodNbr":["ABC1%", "DEF1%], "skuNbr":["MNO1%","KLM2%"], "prodCd":[]}
我需要驗證某些條件
我怎樣才能限制多個%來傳遞的API調用的對象(外卡搜索)在此對象(用戶只能與一個%
搜索。如果有多個%
使用,它應該拋出錯誤)
最低三字應搜索是否需要智慧H%(通配符搜索)和%
後應3個或更多字符(如:ABC%
或ABC1%
)請幫忙
1)一個簡單的方法是檢查是否第一幽靈的指數是從上一個不同: str.indexOf("%") != str.lastIndexOf("%");
2)只是檢查第一幽靈在指數3或gretear
所以:
if (str.includes("%")) {
if (str.indexOf("%") != str.lastIndexOf("%") || str.indexOf("%") < 3) {
alert("error");
} else {}
}
這可能不是最好的解決方案,
<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>
非常感謝。一旦我明天到任,請讓我在我的申請中試用。將更新你的輸出:) – Bijil
感謝Juvian爲您的快速回復。非常感謝 – Bijil
可以說我將對象參數的值轉換爲數組 [「ABC1%,DEF1%,MNO1%,KLM2%」] 如何檢查%不會出現一次以上(意思是,如果一個元素包含%,該數組中沒有其他元素應該包含%。在這種情況下,4個元素具有%,這應該會引發錯誤) – Bijil
@Bijil嗯,取決於,單個元素是否可以超過1%?如果沒有,你可以檢查字符串化版本是否有%str = array.join(',') – juvian