关于正则表达式:Javascript中不区分大小写的textContent

case insensitive textContent in Javascript

本问题已经有最佳答案,请猛点这里访问。

我有以下代码,它使用我来处理网页中具有特定文本内容的所有链接:

1
2
3
4
5
6
7
let links = document.querySelectorAll('a b');
    for (let i = 0; i < links.length; i++) {
        let link = links[i];
        if (link.textContent == 'remove') {
        link.click();
        }
    }

在某个网页中,网页上名为"remove"但在dom中显示为"remove"(不是大写的r)的链接。

一开始我不知道DOM是这样的,也不明白为什么代码不能工作。

很高兴,我觉得它在DOM中是不同的,实际上我看到了我是对的,当我将代码从if (link.textContent == 'remove')更改为if (link.textContent == 'remove')时,代码起作用了。

作为一个初学者,我只是出于好奇而问(因为我谦虚地意识到这样的网页DOM差异可能会发生):

在普通JS中,有没有一种方法可以使文本内容检查不区分大小写?

我相信答案会包括regex,但我必须接受任何regex课程(应该很快就会发生),目前,不能自己回答。


我会把你送到这一页:javascript不区分大小写的字符串比较

简而言之,您只需使用touppercase()或tolowercase()函数比较两个字符串的上(或下)版本,以检查它们是否为ignoreCaseEqual,如下所述:

1
2
string1.toUpperCase() === string2.toUpperCase();
string1.toLowerCase() === string2.toLowerCase();

在您的情况下,只需使用:

1
2
3
4
if (link.textContent.toLowerCase() == 'remove') {
    // since remove is already lowercase
    // do stuff
}

为什么不使用tolowercase函数?

1
2
3
4
5
6
7
let links = document.querySelectorAll('a b');
for (let i = 0; i < links.length; i++) {
    let link = links[i];
    if (link.textContent.toLowerCase() == 'remove') {
    link.click();
    }
}

比较移除、移除甚至移除都没关系。


您可以使用javscript函数将文本更改为小写。在这里,我只创建一个变量名文本,然后在if条件中使用tolowercase()函数。谢谢

1
2
3
4
 var text = link.textContent;
 if (text.toLowerCase() == 'remove') {
     text.click();
 }

编辑:代码缩进