gpt4 book ai didi

javascript - 选择不是开始于但结束于之间的所有内容

转载 作者:行者123 更新时间:2023-11-30 11:56:53 26 4
gpt4 key购买 nike

所以我正在尝试使用 JS 选择一些名称,但我知道如何操作。我在这里找到了 3 个解决方案,但仍然无法正常工作:

我想选择不以 . 开头且必须以 {

结尾的单词

这是我的:\b(?!\.)[\w\-]+(?=\s*{)\b

也试过:^(?!\.)[\w\-]+(?=\s*:)

示例:

.测试{}

测试 { } <--- 选择这个测试

最佳答案

如果您希望匹配 -^!foo {},请使用 (?:\s|^)([^\s\.]+(?=\s*\{)).

如果您只想匹配 foo {},请使用 (?:[^\w\.]|^)([^\W\.]+(?=\s*\{)).

var pattern1 = /(?:\s|^)([^\s\.]+(?=\s*\{))/gm,
pattern2 = /(?:[^\w\.]|^)([^\W\.]+(?=\s*\{))/gm,
text = ".foo{} bar {} !!baz{} ..-boom {}",
match;

console.log('First pattern:');
while (match = pattern1.exec(text)) {
console.log(match[1]); // Prints "bar", "!!baz"
}

console.log('Second pattern:');
while (match = pattern2.exec(text)) {
console.log(match[1]); // Prints "bar", "baz", "boom"
}

第一个正则表达式的解释:

  1. 我们希望您的话之前的领先地位是开始行 ^ 或空格 \s.

  2. 单词本身由重复的非空白字符组成不是点 [^\s\.].

  3. 单词后面必须跟{,为此我们使用lookahead通过 (?=\{)

JavaScript 的正则表达式引擎不支持 lookbehind ,因此您必须使用非捕获组 (?:...) 来匹配单词前的前导位置。

参见 JavaScript regular expressions and sub-matches有关如何访问捕获组的说明

参见 https://regex101.com/r/bT8sE5/5获得带有进一步解释的正则表达式的现场演示。

关于javascript - 选择不是开始于但结束于之间的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37690305/

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