Javascript 基于环境的拆分url
我有以下基于环境的URL,用连字符分隔Javascript 基于环境的拆分url,javascript,angularjs,regex,Javascript,Angularjs,Regex,我有以下基于环境的URL,用连字符分隔 www-dev.someurl.com for dev环境 www-qa.someurl.com用于qa环境 www.someurl.com用于生产,无环境前缀 在我的一段代码中,我想动态地构建上面的url 通过读取url(使用$location.host()或window.location.hostname)基于环境 有人能推荐一个正则表达式或一些代码来确定Url中是否有环境变量(dev/qa)吗 请建议使用regex/code snippet的最佳选项
请建议使用regex/code snippet的最佳选项使用正则表达式
/www\(?=(dev|qa))/
这个表达的意思是
www.
值开始匹配(?=
向前看,看看单词dev
或qa
是否存在(dev | da)
单词dev
和da
值var url=[
“www.qa.someurl.com”,
“www.dev.someurl.com”,
“www.someurl.com”
];
forEach(url=>{
var qaDevEnv=/www\(?=(dev | qa))/.exec(url);
如果(QADEV){
//生成生产url
log(“URL:(“+URL+”)是“+qaDevEnv[1]+”environment”);
}否则{
//构建url
log(“URL:(“+URL+”)是一个生产环境。”);
}
});
您可以构建此正则表达式:
var regex = /www-(qa|dev)/;
if(regex.test(domain){ ... }
因为问题指定了
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
试一试:
根据您之前的评论“在正则表达式中不传递qa/dev,有没有任何方法可以在连字符后获取值”,用这个代替正则表达式如何:
if((window.location.hostname).indexOf('-')>=0){
var env= (window.location.hostname).split('-')[1];
// possible output of env : dev.someurl.com,qa.someurl.com
}
else{
//prod
}
像这样的怎么样 在这里,我不在乎手动生成什么样的版本。所有内容都将自动化
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]);
}
与其在正则表达式中传递qa/dev,不如在连字符后有任何方式可以获取值,如果连字符后有某个值,则意味着存在某个环境,否则我可以将其视为生产环境,我必须从浏览器URL动态读取此内容,而不是在正则表达式中传递qa/dev,有没有任何方式可以在连字符后获取值,如果somevalue在连字符后面,这意味着存在一些环境,否则我可以将其视为产品,我必须从浏览器中动态读取url@user804401-我已更新我的解决方案以进行匹配并捕获QA或DEV值。如果仍然存在问题,请告诉我
function build(deployType) {
var deploys = {
"dev" : {},
"qa" : {},
"prod": {}
}
runDeploy(deploys[deployType]);
}