阵列搜索的Regex通配符
Regex Wildcard for Array Search
我有一个json数组,我当前通过翻转布尔标志来搜索:
for (var c=0; c<json.archives.length; c++) {
if ((json.archives[c].archive_num.toLowerCase().indexOf(query)>-1)){
inSearch = true;
} }
我一直试图通过使用特殊字符"*"来创建通配符regex搜索,但我无法使用通配符在数组中循环。
因此,我试图实现的是,当query='199*'时,将'*'替换为/[''w]/,并基本上搜索19901991199219931994+…+199a、199b等
我所有的尝试都变成了文字,我最终搜索到了"199/[''w]/"。
关于如何创建regex通配符来搜索数组,有什么想法吗?
谢谢!
你应该写这样的东西:
var query = '199*';
var queryPattern = query.replace(/'*/g, '''w');
var queryRegex = new RegExp(queryPattern, 'i');
接下来,检查每个单词:
if(json.archives[c].archive_num.match(queryRegex))
注:
- 考虑使用
?
而不是*
,*
通常代表多个字母,而不是一个 - 请注意,我们必须对反斜杠进行转义,这样它才能创建有效的字符串文字。字符串
''w'
与字符串w
相同——在这种情况下会忽略转义 - 从字符串创建RegExp对象时,不需要分隔符(
/.../
) - CCD_ 7与CCD_。是的,小的
您可以使用以下模式来避免部分匹配:
var queryPattern = '''b' query.replace(/'*/g, '''w') + '''b';
或者,类似地:
var queryPattern = '^' query.replace(/'*/g, '''w') + '$';
var qre = query.replace(/[^'w's]/g, "''$&") // escape special chars so they dont mess up the regex
.replace("''*", "''w"); // replace the now escaped * with ''w'
qre = new RegExp(qre, "i"); // create a regex object from the built string
if(json.archives[c].archive_num.match(qre)){
//...
}
相关文章:
- JavaScript中的通配符日期形式
- JavaScript上的通配符(也许这不费吹灰之力?)
- 带有通配符的姓氏Reg表达式
- Mongoose:布尔型'或者'使用通配符查询
- jQuery的通配符委派
- 聚合物和页面.js路由中的通配符
- javascript中通配符搜索的正则表达式
- Node.js/Expss.js.如果与通配符路由器一起使用,则无法识别静态路由器
- 如何在JQuery中使用带有.html的通配符
- 如何解释BusterJS测试路径中的通配符
- Javascript-IF语句中的通配符
- jQuery选择器中的通配符
- 函数调用中的javascript通配符
- OData:对url请求中的数字(ID)字段进行通配符(startswith)筛选
- Javascript:通配符正则表达式搜索
- Javascript/Jquery.使用带通配符的正则表达式将纯文本替换为html
- Javascript通配符regex搜索结果不一致
- 类似regex的CSS属性选择器通配符捕获
- JavaScript RegEx替换通配符
- 阵列搜索的Regex通配符