gpt4 book ai didi

javascript - 如何防止正则表达式中的 "*/"被解释为 block 注释?

转载 作者:行者123 更新时间:2023-12-02 18:59:33 25 4
gpt4 key购买 nike

我正在开发一个使用 replaceText 的书签。插件将页面上的所有单词(和无关的空格/标点符号)包装在跨度标签中。该插件遍历页面上的所有文本节点,并允许我调用一个函数来操作每个文本节点的内容,而不会破坏页面上的任何其他 HTML 格式。 (我很确定,这都不是问题,但我觉得上下文可能有用)。我的函数调用如下,供大家引用:

$("body *").replaceText(/\S+\s*/g, spanWrap);

问题是我找到的用于分隔这些单词的最佳正则表达式 -- /\S+\s*/g -- 包含 block 注释结尾的字符(“*/”)。如果我在 Notepad++ 的 .js 文件中添加 block 注释的开头几行,我可以看到语法荧光笔正在这样读取它。

当我运行我的小书签时,大多数网站似乎都没有遇到此问题,并且小书签按预期工作。但是,由于我无法预测的原因,某些网站会抛出“Uncaught SyntaxError: Unexpected token <”错误,并且书签会中断/停止运行。如果我更改在 replaceText 中使用的正则表达式函数到我在早期版本的书签中使用的函数 - /\b(\S+?)\b/g -- 虽然在小书签中绝对没有更改任何其他内容,但这些网站不再给出错误,并且小书签工作得很好,所以我必须相信是 block 评论关闭的存在导致了它。

不过,出于我尝试对小书签执行的操作的目的,其中包含注释闭包的表达式 -- /\S+\s*/g -- 比另一个效果好得多,后者不捕获标点符号和空格。不过,如果我的小书签不会在某些网站上损坏,我也非常希望它。

那么,有没有一种方法可以修复我所拥有的正则表达式,以便它不会被读取为注释,或者您可以建议一个可以使用不同语法或其他方式完成相同工作的方法吗? (如果从我的问题中看不出来,我对正则表达式的工作原理有最简单的了解,并且通过从其他 Stack Overflow 问题/答案中复制它们来获得我在本示例中使用的正则表达式)

最佳答案

使用长版本:

var regex = new RegExp("\\S+\\s*", "g");
$("body *").replaceText(regex, spanWrap);

(编辑:转义字符串中的反斜杠)

关于javascript - 如何防止正则表达式中的 "*/"被解释为 block 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14938873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com