javascript - 搜索字符串但忽略标签

标签 javascript regex

<分区>

我试图搜索字符串的出现,但如果它们是 anchor 标记的一部分,我不想匹配它们。

var str = 'hey there. <a href="github.com">github.com/bvaughn</a>';
str.match(/git/gi)

上面的代码同时匹配了git inside href和anchor标签的innerHTML。我想忽略第一场比赛。忽略打开和关闭选项卡,但仍然搜索 innerHTML。

这可以通过修改正则表达式来完成吗?我已经尝试了几种组合,但我就是没做对。

更新

让我解释一下我的实际用例。我正在尝试创建类似于 chrome 中内置搜索的搜索界面,我们在其中突出显示页面中出现的文本。为此,我使用了一个 react 组件 - react-highlight-words .这对普通文本完全没问题,但我想在突出显示它们之前在文本中自动链接 url。

在文本中添加标记并将其传递给上述组件会弄乱标记,因为它也与其中的字符匹配。所以我希望它忽略 anchor 标记的开始和结束标记,但考虑其余部分。

This is where the relevant matching happens.我希望我能以某种方式调整正则表达式以忽略 anchor 标记。

最佳答案

试试这个正则表达式:

var str = 'hey there. <a href="github.com">github.com/bvaughn</a>';
str = str.replace(/<.*>(.*)<\/.*>/g, "$1")
console.log(str);
str.match(/git/gi)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 搜索字符串但忽略标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40308826/

相关文章:

c# - 在特定字符 c# 之前插入字符

javascript - Socket.io 数组访问

javascript - jQuery .prependTo() 创建的表导致浏览器出现 "lag"

php - 子域的正确正则表达式

javascript - javascript eval() 函数内的 HTML 标签

javascript - 正则表达式 - 获取文件名?

javascript - HTTP POST 响应在字母之间返回 '\u0' 个字符,如何删除这些字符或在 JavaScript 中解析它们?

javascript - Node.JS通用 cometd 查询

javascript - 如何在 HTML 表单中捕获键盘输入

用于检查 Gomoku 获胜条件的 C++ 正则表达式