正则表达式不区分大小写

时间:2010-10-08 12:32:25

标签: javascript jquery regex

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

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

5 个答案:

答案 0 :(得分:27)

在正则表达式的结束斜杠之后加上i

所以你的代码看起来像这样:

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

答案 1 :(得分:4)

使用/i修饰符:

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

答案 2 :(得分:3)

另一种选择是简单地将案例操纵到你想要的东西。

看起来好像是在尝试匹配小写字符。

所以你可以这样做:

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
}

答案 3 :(得分:2)

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

答案 4 :(得分:0)

match()函数不同,test()函数返回truefalse,通常在简单测试 RegEx 是否匹配时通常首选。 {strong>不区分大小写匹配的/i修饰符可同时使用这两个功能。

test()/i结合使用的示例:

const link = $('a').first();

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


evil link

输入以下代码:
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