Javascript 有没有更好的方法来编写这个正则表达式条件查找函数?
我尴尬地花了1.5天的时间让下面的代码正常工作。使用if-else语句感觉很笨拙,而且写得很糟糕。我想知道是否有更好的方法来写这篇文章,可以教我更好的方法来处理这类问题 代码的作用是:Javascript 有没有更好的方法来编写这个正则表达式条件查找函数?,javascript,arrays,regex,if-statement,Javascript,Arrays,Regex,If Statement,我尴尬地花了1.5天的时间让下面的代码正常工作。使用if-else语句感觉很笨拙,而且写得很糟糕。我想知道是否有更好的方法来写这篇文章,可以教我更好的方法来处理这类问题 代码的作用是: 查找当前浏览器URL是什么(我在搜索终端的营销参数,即utm_source=linkedin&utm_medium=paid_social) 为特定参数设置正则表达式查找 检查URL以查看它是否与这些参数中的任何一个匹配 记录结果 使用条件语句检查存在哪些参数组合(此时甚至不要认为它正在使用正则表达式) 设置相对
函数replaceInput(){
const leadUrl=window.location.href;
var utm_sources=RegExp(/linkedin | smartbrief | email |付费|付费|社交/g);
var utms=leadUrl.match(utm_源);
控制台日志(utms);
var leadSourceName='其他';
if(utms.includes('smartbrief')){
log(“我们发现了Smartbrief”);
leadSourceName='Smartbrief';
}
其他条件(包括“linkedin”和“电子邮件支付”){
console.log(“Linkedin电子邮件”);
leadSourceName='Linkedin电子邮件';
}
其他条件(包括“linkedin”和“付费社交”)){
console.log(“Linkedin社交”);
leadSourceName='Linkedin社交';
}
否则{
console.log(“未找到UTM”);
}
document.getElementById(“LeadSourceTitle”).value=leadSourceName;
}
html{
字体系列:source_sans_proregular,-apple system、blinkmacsystemfont、Segoe UI、Roboto、Oxygen、Ubuntu、Cantarell、Fira sans、Droid sans、Helvetica Neue、arial、Helvetica、sans serif;
颜色:#444;
}
输入{
高度:51px;
宽度:50%;
字号:1.25em;
边框:2个实心#C5C5;
插入符号颜色:#44c0ff;
填充:0 15px;
}
输入:焦点{
边框:2px实心#44c0ff;
大纲:无;
}
形式测试
使用url的utm填充webform输入
我会使用浏览器APIURLSearchParams
获取URL参数,在这种情况下,regex只是重复和跳过
function replaceInput() {
let urlParams = new URLSearchParams(window.location.search),
leadSourceName = 'Other';
if( urlParams.get('utm_source').includes('smartbrief') ){
leadSourceName = 'Smartbrief';
} else if( urlParams.get('utm_source').includes('smartbrief') ){
if( urlParams.get('utm_campaign').includes('email_paid') ){
leadSourceName = 'Linkedin Email';
} else if( urlParams.get('utm_campaign').includes('paid_social') ){
leadSourceName = 'Linkedin Social';
}
}
if( leadSourceName == 'Other' ){
console.log("No UTMs found");
} else {
console.log(leadSourceName);
}
document.getElementById("LeadSourceTitle").value = leadSourceName;
}
更多信息-
另外,如果您有许多
utm_源代码
&utm_活动
的组合,您甚至可以尝试在这里使用JSON对象。这非常有效,使用urlParams比我的方法更优雅和准确。谢谢