正则表达式不区分大小写

13

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

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

32

正则表达式的结束斜线后面加上一个 i

那么你的代码应该是这样的:

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

5
使用/i修饰符:

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

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
}

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

0
match()函数不同,test()函数返回truefalse,通常在测试正则表达式是否匹配时使用。 大小写不敏感的匹配可以在两个函数中使用/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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接