如何限制多个通配符搜索?
Posted
技术标签:
【中文标题】如何限制多个通配符搜索?【英文标题】:How to restrict Multiple wildcard search? 【发布时间】:2018-01-18 22:38:16 【问题描述】:我有一个名为“param”的对象,它将在 API 调用中作为参数传递
param = "prodNbr":["ABC1%", "DEF1%], "skuNbr":["MNO1%","KLM2%"], "prodCd":[]
我需要验证某些条件
如何在这个对象中限制多个%(通配符搜索)(用户只能搜索一个%
。如果使用多个%
,应该会报错)
如果使用 %(通配符搜索)搜索,至少需要三个字符,并且 %
应该在 3 个或更多字符之后(例如:ABC%
或 ABC1%
)请帮助
【问题讨论】:
【参考方案1】:1) 一个简单的方法是检查第一个幽灵的索引是否与最后一个不同:str.indexOf("%") != str.lastIndexOf("%");
2) 只需检查第一个幽灵是否在索引 3 或 gretear
所以:
if (str.includes("%"))
if (str.indexOf("%") != str.lastIndexOf("%") || str.indexOf("%") < 3)
alert("error");
else
【讨论】:
感谢 Juvian 的快速回复。非常感谢 假设我将对象参数的值转换为数组 ["ABC1%,DEF1%, MNO1%,KLM2%" ] 如何检查 % 是否发生多次(意思是,如果一个元素包含 %,该数组中的其他元素不应包含 %。在这种情况下,4 个元素具有 %,这应该会引发错误) @Bijil 好吧,一个元素可以超过 1% 吗?如果没有,您可以使用 str = array.join(',') 检查字符串化版本是否有 % 我也做过同样的事情。将其转换为一个数组并检查 % 是否多次出现,如果存在 1 个 %,它的索引应该大于 2。以上是关于如何限制多个通配符搜索?的主要内容,如果未能解决你的问题,请参考以下文章