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

Javascript 用于数组搜索的正则表达式通配符,javascript,regex,arrays,search,wildcard,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; } } 我一直在尝试使用一个特殊的字符“*”创建一个通配符正则表达式搜索,但是我无法使用我的通配符在数组中循环 因此,我试图实现的是,当query='199*'时,将'*

我有一个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]/并基本上搜索19901991199219931994+…+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相同-在本例中忽略转义。 从字符串创建对象时,不需要分隔符/../。 [\w]与\w相同。是的,小一。 您可以使用以下模式避免部分匹配:

var queryPattern = '\\b' query.replace(/\*/g, '\\w') + '\\b';
或者,类似地:

var queryPattern = '^' query.replace(/\*/g, '\\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相同-在本例中忽略转义。 从字符串创建对象时,不需要分隔符/../。 [\w]与\w相同。是的,小一。 您可以使用以下模式避免部分匹配:

var queryPattern = '\\b' query.replace(/\*/g, '\\w') + '\\b';
或者,类似地:

var queryPattern = '^' query.replace(/\*/g, '\\w') + '$';

你能告诉我你在哪里更换的代码吗?还有,你在改变什么?我假设archive_num是完整字符串。将所有内容转换为文本的尝试是:query=query.replace'*',/[\w]/;在JS中,搜索字符串不应使用引号'*',而应使用/*/,替换字符串应使用引号。能否显示执行此替换的代码?还有,你在改变什么?我假设archive_num是完整字符串。将所有内容转换为文本的尝试是:query=query.replace'*',/[\w]/;在JS中,搜索字符串不应使用引号'*',而应使用/*/,替换字符串应为quotedPerfect!谢谢,这正是我想弄明白的。谢谢你的提示,他们一定会帮助我在未来!完美的谢谢,这正是我想弄明白的。谢谢你的提示,他们一定会帮助我在未来!