Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有更好的方法来编写这个正则表达式条件查找函数?_Javascript_Arrays_Regex_If Statement - Fatal编程技术网

Javascript 有没有更好的方法来编写这个正则表达式条件查找函数?

Javascript 有没有更好的方法来编写这个正则表达式条件查找函数?,javascript,arrays,regex,if-statement,Javascript,Arrays,Regex,If Statement,我尴尬地花了1.5天的时间让下面的代码正常工作。使用if-else语句感觉很笨拙,而且写得很糟糕。我想知道是否有更好的方法来写这篇文章,可以教我更好的方法来处理这类问题 代码的作用是: 查找当前浏览器URL是什么(我在搜索终端的营销参数,即utm_source=linkedin&utm_medium=paid_social) 为特定参数设置正则表达式查找 检查URL以查看它是否与这些参数中的任何一个匹配 记录结果 使用条件语句检查存在哪些参数组合(此时甚至不要认为它正在使用正则表达式) 设置相对

我尴尬地花了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输入


    我会使用浏览器API
    URLSearchParams
    获取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比我的方法更优雅和准确。谢谢