与任何元素的 .innerHTML 属性匹配的 JavaScript 正则表达式
JavaScript regex that matches the .innerHTML attribute of any element
>我目前正在构建一个Chrome扩展程序,该扩展程序必须在网站上查找特定页面,特别是登录/登录页面,注册/注册页面,关于页面和联系我们页面。
我正在尝试通过首先获取页面中的元素列表(我已经这样做)来实现这一点。现在我需要检查元素的 innerHTML,使其是 DOM 中的叶节点并包含关键字的一部分,我正在尝试使用正则表达式执行此操作。我设法构建了一个正则表达式,它成功地返回了元素的开始或结束标签之间的内容(即标签名称及其属性),但没有返回 innerHTML。以下是我到目前为止所做的(使用"关于"页面的示例:
var list = document.body.getElementsByTagName("*");
var aboutElement = /^[^<.+>].*About.*[^(<.+>]$/i;
for (var i = 0; i <= list.length; i++) {
if ((aboutElement.test(list[i].innerHTML)) || (aboutElement.test(list[i].alt))) {
list[i].click();
}
}
知道我应该向它添加什么,以便它只匹配叶节点(不包含其他节点的节点)而不是开始或结束标签中的内容吗?我还认为,由于 .* 部分,它与 innerHTML 中的所有内容相匹配,所以我可能也需要更改它。任何帮助将不胜感激!
感谢评论中的两个答案,我设法解决了这个问题。我使用了.textContent
并更改了正则表达式,如下所示,它起作用了。
var list = document.body.getElementsByTagName("*");
var aboutElement = /^(.*?'s*('bAbout'b)[^$]*)$/i;
for (var i = 0; i <= list.length; i++) {
if ((aboutElement.test(list[i].textContent)) || (aboutElement.test(list[i].alt))) {
list[i].click();
}
}
相关文章:
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 将javascript正则化为vb
- 将po-box javascript正则表达式转换为c#regex
- 被javascript正则表达式分组卡住了
- 从字符串中提取年份的Javascript正则表达式
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- JavaScript正则表达式匹配量
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- javascript正则表达式来识别所有特殊字符
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 查找所有注释的JavaScript正则表达式
- javascript正则表达式验证未按预期工作
- javascript正则表达式,用于匹配带数字和不带数字的字符串
- 模仿负查找以匹配JavaScript正则表达式中没有紧跟特定字符的模式
- JavaScript正则表达式(带_-的字母数字字符)
- 用特定的javascript正则表达式替换每个单词
- 搜索日历事件的Javascript正则表达式
- 如何获取 JavaScript 正则表达式子匹配的位置
- 正则表达式子字符串以JavaScript开始和结束