Я хочу, чтобы соответствовать config.json
и config.staging.json
и config.anything.json
Что такое регулярное выражение JavaScript для соответствия config. *. Json?
До сих пор я configFile.match /config\.(.*)\.json/i
Я хочу, чтобы соответствовать config.json
и config.staging.json
и config.anything.json
Что такое регулярное выражение JavaScript для соответствия config. *. Json?
До сих пор я configFile.match /config\.(.*)\.json/i
Вы требуете, что две точки, но в config.json
, есть только один. Вы можете использовать не-захват группу необязательного второго бита:
/config(?:\.(.+))?\.json/i
Я предполагаю, что вы хотели, что группа захвата там, чтобы захватить staging
или anything
.
Вы также можете якорей, так что не соответствует fooconfig.jsonasdlfja
:
/^config(?:\.(.+))?\.json$/i
Примеры:.
var rex = /^config(?:\.(.+))?\.json$/i;
var tests = {
"config.json": [true, undefined],
"config.staging.json": [true, "staging"],
"config.anything.json": [true, "anything"],
"CONFIG.JSON": [true, undefined],
"cOnFiG.StAgInG.JsOn": [true, "StAgInG"],
"fooconfig.json": null,
"config.jsonfoo": null,
"configjson": null
};
Object.keys(tests).forEach(function(str) {
var result = describe(str.match(rex)),
expect = describe(tests[str]);
snippet.log("Testing: " + str);
snippet.log("Result : " + result);
snippet.log("Expect : " + expect);
if (result == expect) {
snippet.log("Correct");
} else {
snippet.log("**ERROR**");
}
snippet.log("--");
});
function describe(r) {
if (r) {
if (r[1]) {
return "Match, captured '" + r[1] + "'";
}
return "Match, no capture";
}
return "No match";
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
Это не работает для строк 'config..json' и' config.jsonot' – MaxZoom
Ваш конфигурации < -somthing -> JSON regex is
/\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
См DEMO примеры и результаты
считают, что, когда '. *' Не совпадает ни с чем остальная часть шаблон 'config..json'. – zzzzBov
Если бы это был я, я бы использовал два отдельных регулярных выражения: '/^config\./i.test(configFile) &&/\. Json $/i.test (configFile)'. Легкий код для чтения, простой код для отладки. – zzzzBov