Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找包含字符串匹配正则表达式的DOM元素_Javascript_Regex_Search_Dom - Fatal编程技术网

Javascript 查找包含字符串匹配正则表达式的DOM元素

Javascript 查找包含字符串匹配正则表达式的DOM元素,javascript,regex,search,dom,Javascript,Regex,Search,Dom,我需要在HTML页面上找到与特定正则表达式匹配的所有文本片段(也就是说,我需要忽略标记,以便“名字:John”将匹配“名字:John”),然后突出显示这些找到的片段(通过使用新元素装饰并应用自定义css样式)并且能够定位这些片段,例如,能够滚动到视图中。 功能类似于Skype浏览器插件对第页上的电话号码所做的操作 你试过这样的东西吗 document.body.innerHTML.replace(/]+>/g')您可以递归地在DOM中遍历元素的textContent或innerText属性(视情

我需要在HTML页面上找到与特定正则表达式匹配的所有文本片段(也就是说,我需要忽略标记,以便
名字:
John
将匹配
“名字:John”
),然后突出显示这些找到的片段(通过使用新元素装饰并应用自定义css样式)并且能够定位这些片段,例如,能够滚动到视图中。
功能类似于Skype浏览器插件对第页上的电话号码所做的操作

你试过这样的东西吗


document.body.innerHTML.replace(/]+>/g')

您可以递归地在DOM中遍历元素的textContent或innerText属性(视情况而定),也可以在getElementsByTagName返回的集合上使用循环。无论哪种方式,一旦识别了文本和父元素,就需要确定如何替换它

如果字符串被拆分为一个或多个其他元素,您在替换中对文档结构的要求是什么?

您可以使用获取包含
标记,该标记位于包含
名字:
标记之后,然后应用样式:

$("span:contains('First name:') ~ b:contains('John')").css('color','red');

下面是一个运行示例:

您是否有不起作用的代码,或者这是一个“给我一个codez”问题?你们试过什么?我需要找到方法,我可以做编码。如果已经解决了这个问题,并且代码可用——甚至更好。jQuery似乎可以通过:contains()选择器来实现这一点。也许它的逻辑可以被重新定义为使用regexp搜索而不是子字符串搜索。递归地遍历DOM,检查文本节点(nodeType为3)的
数据
。标记,是的,这就是我所想的-遍历DOM并将符号作为输入传递给某个解析器,可能是用ANTLR之类的工具专门为我的情况生成的,不可重复。这不仅会破坏动态添加的每个侦听器,而且可能会在不同浏览器中以不同方式破坏包含非平凡内容的任何页面的元素、属性和属性。我需要保留有关搜索结果在DOM中的位置的信息,或者我可以执行document.body.innerText.match()-这不是我需要的。我认为使用以节点为中心的方法与以字符串为中心的方法相比,会产生更大的可移植性。除此之外,这也是DOM的一个方面,大多数人都会遇到这样的问题:)。是的,但是OP想要字符串,即使它被拆分为多个元素,所以只查看文本节点也不行。我不知道他打算如何处理分割字符串,但至少上面的方法会找到拥有整个字符串的最近祖先。这只是一个示例,而不是具体案例