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

Javascript: Wildcard regex search

本文关键字:搜索 正则表达式 通配符 Javascript      更新时间:2024-01-20

我需要用通配符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 regex = new RegExp(keyword);
// if you want it case-insensitive:
var regex = new RegExp(keyword, 'i');

如果关键字包含任何特定于正则表达式的字符(如[*),则会中断。如果这对你来说是个问题,你需要写一个函数来转义这些字符。

但是,通过使用strings[i].indexOf(keyword) != -1测试关键字是否在字符串中,您可以更容易地解决问题,而无需使用regex。

不太确定您在这里到底想做什么。Javascript确实有文字RE,所以你可以只做:

var regex = /foo/;

这只是一种更好的方式:

var regex = new RegExp( 'foo' );

(但在第二种情况下,"foo"可能是传入的字符串参数。

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