Javascript:替换大海捞针中不在两个字符之间的针

标签 javascript regex

我想更换不在两个字符之间的大海捞针。

假设我有一个正则表达式 /\bneedle\b/g,它将匹配所有不在任何单词字符旁边的针。我想对此进行扩展,包括不在任何单词字符旁边且不在两个字符(例如 [ 和 ] 之间)的针

所以前三根针会匹配,但其余的不会:needle: needle's needle [needle] [needle something] needle1 needler

知道我该怎么做吗?

最佳答案

你可以使用这个正则表达式:

/(^|[^\w\[])(needle)(?![\w\]])/

RegEx Demo

分手:

(^|[^\w\[])    # line start OR a non-word non-[ character
(needle)       # match and group our targeted text
(?![\w\]])     # negative lookahead to fail the match if next char is word char or [

根据下面的评论,您可以使用以下替换代码:

var str = "needle: needle's needle [needle] [needle something] needle1 needler";
var reg = new RegExp("(^|[^\\w\\[])(needle)(?![\\w\\]])", "gi");
str = str.replace(reg, "$1*$2*");

//=> *needle*: *needle*'s *needle* [needle] [needle something] needle1 needler

关于Javascript:替换大海捞针中不在两个字符之间的针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37080262/

相关文章:

javascript - Vue v-if 渲染子组件时调用子组件的函数

javascript - HTML <script> 标签可以从不同点连接吗?

javascript - 如何在 ng-include 中访问 ng-repeat 的 $parent

c++ - 对文件夹中的每个文件应用正则表达式搜索

ruby - 如何在不知道其名称的情况下使用其内容的正则表达式获取 XML 子标签

javascript - 在 Javascript 中,如何检测包含子数组和单个元素的数组中的不同类型的元素?

php - 你如何用正则表达式处理这种条件情况?

java - yyyyMMdd 的正则表达式日期验证

php - 如何从字符串的中间删除撇号

java - 使用 java 中的正则表达式对特定字符串的第一次出现取反。