如何限制多个通配符搜索?

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。

以上是关于如何限制多个通配符搜索?的主要内容,如果未能解决你的问题,请参考以下文章

什么是 Wildcarded 通配符

BigQuery 通配符表 - 有啥限制?

word如何搜索多个关键词并高亮

跨多个列 PostgreSQL/Rails 的慢速通配符搜索 LIKE

SSL证书是不是支持二级或多级域名?

在 Hive 中,如何使用“regexp_replace()”对标记值执行通配符搜索,以将其替换为公共值?