Sor*_*Hat 1 javascript regex arrays search wildcard
我有一个json数组,我目前通过翻转布尔标志来搜索:
for (var c=0; c<json.archives.length; c++) {
if ((json.archives[c].archive_num.toLowerCase().indexOf(query)>-1)){
inSearch = true;
} }
Run Code Online (Sandbox Code Playgroud)
我一直试图通过使用特殊字符'*'来创建通配符正则表达式搜索,但我无法使用我的通配符遍历数组.
所以我想要实现的是当查询='199*'时,将'*'替换为/ [\ w] /并基本上搜索1990,1991,1992,1993,1994 + ... + 199a,199b等
我的所有尝试都是字面意思,我最终搜索'199/[\ w] /'.
有关如何创建正则表达式通配符以搜索数组的任何想法?
谢谢!
你应该写这样的东西:
var query = '199*';
var queryPattern = query.replace(/\*/g, '\\w');
var queryRegex = new RegExp(queryPattern, 'i');
Run Code Online (Sandbox Code Playgroud)
接下来,检查每个单词:
if(json.archives[c].archive_num.match(queryRegex))
Run Code Online (Sandbox Code Playgroud)
笔记:
?代替*,*通常代表许多字母,而不是一个.'\w'与字符串相同w- 在这种情况下忽略转义./.../创建RegExp对象时,不需要分隔符().[\w]是一样的\w.是的,未成年人.您可以使用模式避免部分匹配:
var queryPattern = '\\b' query.replace(/\*/g, '\\w') + '\\b';
Run Code Online (Sandbox Code Playgroud)
或者,类似地:
var queryPattern = '^' query.replace(/\*/g, '\\w') + '$';
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
6058 次 |
| 最近记录: |