gpt4 book ai didi

javascript - 全局非捕获组的(简单?)正则表达式问题

转载 作者:行者123 更新时间:2023-11-29 18:34:19 25 4
gpt4 key购买 nike

假设我有字符串 Hello {{name}}, how are you doing today? 我正试图从该字符串中获取 name

到目前为止,我有 /\{{2}[a-z0-9]*\}{2}/gi。问题是,它获取 {{name}} 而不是 name。没有全局标志它工作正常,但我试图让双括号内的每个单词实例,所以它不太正确......我不是 RegEx 专家所以我希望有人能帮助我......

最佳答案

最好的解决方案是使用环视断言,这样 {{}} 就不会被拾取,但是 JavaScript 正则表达式不支持环视,它仅支持前瞻。

因此,一种替代方法是将您的文本放在捕获组中并抓取其中的内容:

/\{{2}([a-z0-9]*)\}{2}/gi

要获得每次捕获,请使用您的正则表达式创建一个 RegExp 对象,并遍历其 exec() 函数的结果。例如:

var str = 'Hello {{name}}, how are you doing {{date}}?';
var re = /\{{2}([a-z0-9]*)\}{2}/gi;
var words = [];
var match;

while (match = re.exec(str)) {
words.push(match[1]);
}

jsFiddle sample

或者正如 Gumbo 在他的评论中建议的那样,从您的匹配数组中手动​​删除 {{}}

关于javascript - 全局非捕获组的(简单?)正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748742/

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