我想更换不在两个字符之间的大海捞针。
假设我有一个正则表达式 /\bneedle\b/g
,它将匹配所有不在任何单词字符旁边的针。我想对此进行扩展,包括不在任何单词字符旁边且不在两个字符(例如 [ 和 ] 之间)的针
所以前三根针会匹配,但其余的不会:needle: needle's needle [needle] [needle something] needle1 needler
知道我该怎么做吗?
最佳答案
你可以使用这个正则表达式:
/(^|[^\w\[])(needle)(?![\w\]])/
分手:
(^|[^\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/