用于数组搜索的正则表达式通配符

问题描述

| 我有一个json数组,目前正在通过翻转布尔值标志进行搜索:
for (var c=0; c<json.archives.length; c++) {
if ((json.archives[c].archive_num.toLowerCase().indexOf(query)>-1)){
inSearch = true;
} }
而且我一直在尝试使用特殊字符\'* \'创建通配符正则表达式搜索,但是我无法使用通配符遍历数组。 所以我要完成的工作是当query = \'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\');
接下来,检查每个单词:
if(json.archives[c].archive_num.match(queryRegex))
笔记: 考虑使用
?
代替
*
*
通常代表许多字母,而不是一个字母。 注意,我们必须转义反斜杠,以便创建有效的字符串文字。字符串
\'\\w\'
与字符串
w
相同-在这种情况下,转义符将被忽略。 从字符串创建RegExp对象时,不需要定界符(
/.../
)。
[\\w]
\\w
相同。是的,未成年人 您可以使用以下模式避免部分匹配:
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)){
    //...
}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...