【问题标题】:regex case insensitivity正则表达式不区分大小写
【发布时间】:2011-04-22 20:57:10
【问题描述】:

如何使以下不区分大小写?

if ($(this).attr("href").match(/\.exe$/))
{
// do something
}

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    在正则表达式的右斜杠之后放置一个i。

    所以你的代码应该是这样的:

    if ($(this).attr("href").match(/\.exe$/i))
    

    【讨论】:

      【解决方案2】:

      使用/i 修饰符:

      if ($(this).attr("href").match(/\.exe$/i))
      {
      // do something
      }
      

      【讨论】:

        【解决方案3】:
        if ($(this).attr("href").match(/\.exe$/i))
        {
        // do something
        }
        

        【讨论】:

          【解决方案4】:

          另一种选择是简单地将外壳操作到您想要的位置。

          您似乎在尝试匹配小写字符。

          所以你可以这样做:

          if ($(this).attr("href").toLowerCase().match(/\.exe$/)) {
               // do something
          }
          

          事实上,如果你愿意,你可以使用.indexOf() 代替正则表达式。

          if ($(this).attr("href").toLowerCase().indexOf('.exe') > -1) {
               // do something
          }
          

          当然,如果这是一个问题,这也会匹配字符串中间的.exe。

          最后,您实际上并不需要为此创建 jQuery 对象。 href 属性可以直接从this 表示的元素访问。

          if ( this.href.toLowerCase().match(/\.exe$/) ) {
               // do something
          }
          

          【讨论】:

            【解决方案5】:

            与match() 函数不同,test() 函数返回true 或false,通常在简单测试RegEx 是否匹配时首选。用于不区分大小写匹配的/i 修饰符适用于这两个函数。

            使用test() 和/i 的示例:

            const link = $('a').first();
            
            if (/\.exe$/i.test(link.attr('href')))
               $('output').text('The link is evil.');
            


            修改代码:
            https://jsfiddle.net/71tg4dkw

            注意: 请注意隐藏其文件扩展名的恶意链接,例如: https://example.com/evil.exe?x=5

            test() 的文档:
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-10-08
              • 1970-01-01
              • 2013-11-12
              相关资源
              最近更新 更多