gpt4 book ai didi

javascript - javascript 中的正则表达式lookbehind

转载 作者:行者123 更新时间:2023-11-28 18:58:26 24 4
gpt4 key购买 nike

我正在尝试匹配文本中的一些单词

工作示例(我想要的)regex101 :

regex = /(?<![a-z])word/g
text = word 1word !word aword

只有前三个单词会被匹配,这就是我想要实现的目标。但后面的外观在 javascript 中不起作用:(

所以现在我正在尝试这个regex101 :

regex = /(\b|\B)word/g
text = word 1word !word aword

但所有单词都会匹配,并且它们前面不能有其他字母,只能有整数或特殊字符。如果我只使用较小的“\b”,则 1word 将不匹配,如果我只使用“\B”,则 !word 将不匹配

编辑

输出应为 ["word","word","word"]

还有 1 !不得包含在匹配中,也不得包含在另一个组中,这是因为我想将其与 javascript .replace(regex,function(match){}) 一起使用,它不应循环遍历 1 和!

代码我用它来

    for(var i = 0; i < elements.length; i++){
text = elements[i].innerHTML;

textnew = text.replace(regexp,function(match){
matched = getCrosslink(match)[0];
return "<a href='"+matched.url+"'>"+match+"</a>";
});
elements[i].innerHTML = textnew;
}

最佳答案

捕捉主 Angular

在没有看到更多输出示例的情况下,很难确切地知道您想要什么,但是寻找以边界开始或以非字母开始的情况又如何呢?例如这样:

(\bword|[^a-zA-Z]word)

输出:['word', '1word', '!word']

Here is a working example

<小时/>

仅捕获“单词”

如果您只想捕获“单词”部分,您可以使用以下命令并获取第二个捕获组:

(\b|[^a-zA-Z])(word)

输出:['word', 'word', 'word']

Here is a working example

<小时/>

使用replace()

您可以在定义替换值时使用特定的捕获组,因此这对您有用(其中“new”是您要使用的单词):

var regex = /(\b|[^a-zA-Z])(word)/g;
var text = "word 1word !word aword";

text = text.replace(regex, "$1" + "new");

输出:“new 1new !new aword”

Here is a working example

如果您在替换中使用专用函数,请尝试以下操作:

textnew = text.replace(regexp,function (allMatch, match1, match2){
matched = getCrosslink(match2)[0];
return "<a href='"+matched.url+"'>"+match2+"</a>";
});

Here is a working example

关于javascript - javascript 中的正则表达式lookbehind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33103504/

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