我有一个文件列表:
var files = [
"user_parse_info",
"user_parse_age",
"site_render_info",
"site_parse_name"
]
现在我有一个模式:
var pattern = "site_*_name";
这应该只匹配最后一个文件。 我怎么检查这个?也许是RegExp?
答案 0 :(得分:2)
是的,正则表达式对此更好。
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);
});
答案 1 :(得分:0)
使用正则表达式意味着您需要转义某些字符,例如.
和$
,否则它们可能会出现误报或使模式不匹配任何内容。
您可以将字符串拆分为星号,并根据字符串检查部分:
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
}