【发布时间】:2011-04-22 20:57:10
【问题描述】:
如何使以下不区分大小写?
if ($(this).attr("href").match(/\.exe$/))
{
// do something
}
【问题讨论】:
标签: javascript jquery regex
如何使以下不区分大小写?
if ($(this).attr("href").match(/\.exe$/))
{
// do something
}
【问题讨论】:
标签: javascript jquery regex
在正则表达式的右斜杠之后放置一个i。
所以你的代码应该是这样的:
if ($(this).attr("href").match(/\.exe$/i))
【讨论】:
使用/i 修饰符:
if ($(this).attr("href").match(/\.exe$/i))
{
// do something
}
【讨论】:
if ($(this).attr("href").match(/\.exe$/i))
{
// do something
}
【讨论】:
另一种选择是简单地将外壳操作到您想要的位置。
您似乎在尝试匹配小写字符。
所以你可以这样做:
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
}
【讨论】:
与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
【讨论】: