【问题标题】:Regular expression string compare ignoring symbols正则表达式字符串比较忽略符号
【发布时间】:2014-12-17 15:11:48
【问题描述】:

我有两个变量:

varAdditionalTeamAddress = ;; MountainWestITSupport@somedomain.com

VariableAddTeamEmails =  ; MountainWestITSupport@somedomain.com;

这两个变量用于连接和收集额外的支持团队电子邮件。但是在拼接的过程中,如果email是空的,就只有分号过来了。

我需要比较这两个变量(忽略 ;)以查看它们是否相等。我们能否编写一个正则表达式来提取此电子邮件字符串中的所有分号和空格,以便它们具有可比性?

与上述类似,如果我通过排除空格和分号来清理它们,则相等性测试将返回 TRUE。

正则表达式大师,请帮助。 PS 我需要 REGEX 的方式来做到这一点。

【问题讨论】:

    标签: javascript regex string equality


    【解决方案1】:

    你可以这样做:

    varAdditionalTeamAddress = varAdditionalTeamAddress.replace(/^[ ;]+/, "");
    
    VariableAddTeamEmails = VariableAddTeamEmails.replace(/^[ ;]+/, "");
    

    从变量的开头删除; 和空格的任意组合。

    【讨论】:

    • 我是素食主义者 ;) 不过我很想为其他饥饿的人学习钓鱼! :)
    【解决方案2】:

    抱歉压缩代码:

    if( 
         VariableAddTeamEmails.match( /\w+@\w+\.\w+/g ).indexOf( 
              varAdditionalTeamAddress.match( /\w+@\w+\.\w+/g )[ 0 ] )  
         ) != -1
    ){
     // ...
    }
    

    我的正则表达式并不是获取地址邮件的最佳方式。 StackOverFlow 上有很多主题。

    【讨论】:

      【解决方案3】:

      如果你在 Windows 上使用 PowerShell,那么你可以这样做

      $varAdditionalTeamAddress = ";; MountainWestITSupport@somedomain.com"
      $VariableAddTeamEmails = " ; MountainWestITSupport@somedomain.com;"
      
      if ( ($varAdditionalTeamAddress.Trim() -replace '(;+|\s)','') -eq ($VariableAddTeamEmails.Trim() -replace '(;+|\s)','')){
          Write "Email Strings are equal"
      }else{
          Write "They Seem to different"
      }
      

      【讨论】:

        猜你喜欢
        • 2017-04-13
        • 2012-11-15
        • 1970-01-01
        • 1970-01-01
        • 2018-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多