如何使以下不区分大小写?
if ($(this).attr("href").match(/\.exe$/))
{
// do something
}
答案 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()
函数返回true
或false
,通常在简单测试 RegEx 是否匹配时通常首选。 {strong>不区分大小写匹配的/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