如何检查一个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/