与config.*.json匹配的JavaScript正则表达式是什么?
我想匹配与config.*.json匹配的JavaScript正则表达式是什么?,javascript,regex,Javascript,Regex,我想匹配config.json和config.staging.json和config.anything.json 到目前为止,我有configFile.match/config\.(.*)\.json/I您要求有两个点,但在config.json中,只有一个点。您可以将非捕获组用于可选的第二位: /config(?:\.(.+))?\.json/i 我假设您希望捕获组在那里捕获暂存或任何东西 您可能还需要锚定,因此它与fooconfig.jsonasdlfja不匹配: /^config(?:\
config.json
和config.staging.json
和config.anything.json
到目前为止,我有
configFile.match/config\.(.*)\.json/I
您要求有两个点,但在config.json
中,只有一个点。您可以将非捕获组用于可选的第二位:
/config(?:\.(.+))?\.json/i
我假设您希望捕获组在那里捕获暂存
或任何东西
您可能还需要锚定,因此它与fooconfig.jsonasdlfja
不匹配:
/^config(?:\.(.+))?\.json$/i
示例:
var rex=/^config(?:\.(.+)?\.json$/i;
var测试={
“config.json”:[true,未定义],
“config.staging.json”:[true,“staging”],
“config.anything.json”:[true,“anything”],
“CONFIG.JSON”:[true,未定义],
“cOnFiG.StAgInG.JsOn”:[true,“StAgInG”],
“fooconfig.json”:null,
“config.jsonfoo”:null,
“configjson”:空
};
Object.key(tests).forEach(function(str){
变量结果=描述(str.match(rex)),
expect=描述(测试[str]);
log(“测试:+str”);
log(“结果:+Result”);
log(“Expect:+Expect”);
如果(结果==预期){
log(“正确”);
}否则{
log(“**错误**”);
}
snippet.log(“--”);
});
函数描述(r){
if(r){
if(r[1]){
返回“匹配,捕获”“+r[1]+”“”;
}
返回“匹配,不捕获”;
}
返回“不匹配”;
}
您的config.json正则表达式是
/\bconfig(\.[\w]+)*\.json\b/gi
where:
\b word boundry
\. dot character
[\w] followed by any word character
()* matches this part zero or more times
/gi global case ignored search
有关示例和结果,请参见考虑当
*
不匹配时,模式的其余部分是config..json
。如果是我,我将使用两个单独的正则表达式:/^config\./I.test(configFile)和&/\.json$/I.test(configFile)
。易于阅读的代码,易于调试的代码。这不适用于config..json
和config.jsonot
字符串