根据连字符分隔的环境,我有以下网址。
在我的代码片段中,我想动态构建上面的url 通过从url读取(使用$ location.host()或window.location.hostname)基于环境
任何人都可以建议使用正则表达式或一些代码来查明Url中是否存在环境变量(dev / qa)
if(contains dev/qa){
//build url
} else {
//build production url
}
请使用正则表达式/代码段
建议最佳选项答案 0 :(得分:1)
根据你之前的评论'而不是在正则表达式中传递qa / dev是否有任何方法我可以在连字符后得到值',这怎么样而不是正则表达式:
404
答案 1 :(得分:0)
使用正则表达式/www\.(?=(dev|qa))/
这个表达意味着;
www.
值开始匹配(?=
展望未来,看看dev
或qa
这个词是否存在(dev|da)
字dev
和da
值。 该词可以通过匹配器的第一个索引访问。
示例:强>
var urls = [
"www.qa.someurl.com",
"www.dev.someurl.com",
"www.someurl.com"
];
urls.forEach(url=> {
var qaDevEnv = /www\.(?=(dev|qa))/.exec(url);
if (qaDevEnv) {
//build production url
console.log("URL: ( " + url + " ) is " + qaDevEnv[1] + " environment.");
} else {
//build url
console.log("URL: ( " + url + " ) is a production environment.");
}
});
答案 2 :(得分:0)
您可以构建此正则表达式:
var regex = /www-(qa|dev)/;
if(regex.test(domain){ ... }
答案 3 :(得分:0)
由于问题指定www-dev
而非www.dev
。
我们也不需要使用更复杂的前瞻。
if( /www-(dev|qa)\./.exec( url ) ) {
// build url
} else {
// build production url
}
这也将返回匹配的值。
/www-(dev|qa)\./.exec( "www-dev.someurl.com" )
["www-dev.", "dev"]
/www-(dev|qa)\./.exec( "www-qa.someurl.com" )
["www-qa.", "qa"]
/www-(dev|qa)\./.exec( "www.someurl.com" )
null
答案 4 :(得分:0)
这样的事情怎么样?
我不关心我手动提供什么样的构建。一切都将自动化。
function getDeploymentType(str) {
var matches = str.match(/(?:-)([^\.]*)/);
return matches? matches[1]: "prod";
}
build(getDeploymentType(window.location.hostname)); // can return "dev", "qa" or "prod"
在构建函数中,代码可能如下所示:
function build(deployType) {
var deploys = {
"dev" : {},
"qa" : {},
"prod": {}
}
runDeploy(deploys[deployType]);
}