如何检查一个string是否与星号匹配

我有一个文件列表:

var files = [ "user_parse_info", "user_parse_age", "site_render_info", "site_parse_name" ] 

现在我有一个模式:

 var pattern = "site_*_name"; 

这应该只匹配最后一个文件。 我怎样才能检查这个? 也许RegExp?

是的,正则expression式是更好的select

 var _ = require('nimble'); var files = [ "user_parse_info", "user_parse_age", "site_render_info", "site_parse_name" ]; var re = /^site_.*_name$/; var result = _.filter(files, function (val) { return re.test(val); }); 

使用正则expression式意味着你需要转义一些像.$ ,否则他们可以给出误报,或保持模式匹配任何东西。

您可以将string拆分为星号,并根据string检查部分:

 var parts = pattern.split('*'); if ( str.length >= parts[0].length + parts[1].length && str.substr(0, parts[0].length) == parts[0] && str.substr(str.length - parts[1].length) == parts[1]) { // matches } 

演示: http : //jsfiddle.net/Guffa/u8XEE/