Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:通配符正则表达式搜索_Javascript_Regex - Fatal编程技术网

Javascript:通配符正则表达式搜索

Javascript:通配符正则表达式搜索,javascript,regex,Javascript,Regex,我需要使用通配符正则表达式过滤字符串数组: // my search key var myKeyword = 'bar'; // my search list var strings = ['foo', 'bar', 'foobar', 'barfoo', 'hello', 'java', 'script', 'javascript']; // my results var results = []; // the regexp, I don't understand var regex

我需要使用通配符正则表达式过滤字符串数组:

// my search key
var myKeyword = 'bar';

// my search list
var strings = ['foo', 'bar', 'foobar', 'barfoo', 'hello', 'java', 'script', 'javascript'];

// my results
var results = [];

// the regexp, I don't understand
var regex = new RegExp(\*/, myKeyword);

// the for loop
for (var i = 0; i < strings.length; i++) {
    if (regex.test(strings[i]) {
        results.push(strings[i]);
    }
}

console.log(results); // prints ['bar', 'foobar', 'barfoo']
//我的搜索键
var myKeyword='bar';
//我的搜索列表
var strings=['foo','bar','foobar','barfoo','hello','java','script','javascript'];
//我的结果
var结果=[];
//regexp,我不明白
var regex=new RegExp(\*/,myKeyword);
//for循环
for(var i=0;i

那么如何修复正则表达式呢?

如果要使用正则表达式,请按如下方式操作:

var regex = new RegExp(keyword);
// if you want it case-insensitive:
var regex = new RegExp(keyword, 'i');
如果关键字包含任何特定于正则表达式的字符,例如
[
*
,则此操作将中断。如果您遇到问题,则需要编写一个函数来转义这些字符


但是,通过使用
字符串[i].indexOf(关键字)!=-1
测试关键字是否在字符串中,您可以更轻松地解决问题,而无需使用正则表达式。

如果您想使用正则表达式,请按以下方式操作:

var regex = new RegExp(keyword);
// if you want it case-insensitive:
var regex = new RegExp(keyword, 'i');
如果关键字包含任何特定于正则表达式的字符,例如
[
*
,则此操作将中断。如果您遇到问题,则需要编写一个函数来转义这些字符


但是,通过使用
字符串[i].indexOf(关键字)!=-1
来测试关键字是否在字符串中,您可以更轻松地解决问题,而无需使用正则表达式。

不太确定您在这里到底想做什么。Javascript有文字分辨率,因此您可以执行以下操作:

var regex = /foo/;
这是一种更好的方法:

var regex = new RegExp( 'foo' );
(但在第二种情况下,“foo”可以是传入的字符串参数


正则表达式上不需要任何前导/尾随通配符。

不太确定您在这里到底想做什么。Javascript确实有文字分辨率,因此您可以执行以下操作:

var regex = /foo/;
这是一种更好的方法:

var regex = new RegExp( 'foo' );
(但在第二种情况下,“foo”可以是传入的字符串参数


正则表达式上不需要任何前导/尾随通配符。

您想做什么?查找任何包含
bar
的内容,无论在哪里?不需要正则表达式。一个简单的
str.indexOf(myKeyword)>-1
就足够了。关于
RegExp
的用法,请看一看。您想做什么?查找任何包含
bar
的内容,无论在哪里?您不需要正则表达式。一个简单的
str.indexOf(myKeyword)>-1
就足够了。关于
RegExp
的用法,请看一看。为什么需要使用
.*
和平?regex不限于字符串的开头/结尾。regex
foo
匹配包含
foo
的任何位置的字符串。
^.*foo.$
也一样,但确实没有理由让它更复杂“没有必要这么做。@TimPietzcker和ThiefMaster-是的,我知道。)。我的问题更具修辞性。如果没有额外定义,*-模式是否会自动使用?请参阅我之前的评论-正则表达式不限于匹配字符串的开头/结尾,因此它们不是必需的。为什么需要使用
.*
和平?正则表达式不限于字符串的开头/结尾。正则表达式
foo
匹配一个任何地方都包含
foo
的戒指。当然
^.*foo.*$
也一样,但确实没有理由让它变得过于复杂。@TimPietzcker和ThiefMaster-是的,我知道))。我的问题更具修辞性。*-模式在没有额外定义时是否自动使用?请参阅我之前的评论-正则表达式不限于匹配字符串的开头/结尾,因此它们不是必需的。