Javascript 如何检查字符串是否与带星号的模式匹配
我有一个文件列表:Javascript 如何检查字符串是否与带星号的模式匹配,javascript,node.js,Javascript,Node.js,我有一个文件列表: var files = [ "user_parse_info", "user_parse_age", "site_render_info", "site_parse_name" ] 现在我有了一个字符串模式: var pattern = "site_*_name"; 这应该只匹配最后一个文件。 我怎么检查这个?也许是一个RegExp?是的,正则表达式是一个更好的选择 var _ = require('nimble'); var files
var files = [
"user_parse_info",
"user_parse_age",
"site_render_info",
"site_parse_name"
]
现在我有了一个字符串模式:
var pattern = "site_*_name";
这应该只匹配最后一个文件。
我怎么检查这个?也许是一个RegExp?是的,正则表达式是一个更好的选择
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);
});
使用正则表达式意味着您需要转义一些字符,如
和$
,否则它们可能会给出误报或阻止模式匹配任何内容
您只需拆分星号上的字符串,然后对照字符串检查各个部分:
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
}
演示:谢谢您的回答。我想是出了什么问题。看一看:太好了:)你可以使用敏捷来迭代抛出arraygreat任务!如果我们用大括号,它也会起作用。。。(站点)*(_名称)这是最好的解决方案,因为它是纯JS。不需要服务器端JS或require()。