gpt4 book ai didi

javascript - 用于匹配括号中的值的正则表达式/Javascript

转载 作者:搜寻专家 更新时间:2023-11-01 04:58:11 24 4
gpt4 key购买 nike

我的 Web 应用程序需要解析用括号括起来的字符串中的数字范围。我从来没有真正正确地理解正则表达式,所以我需要一些帮助。下面的代码是我想要做的(然后我将拆分连字符上的字符串并获取最小/最大值)。显然模式是错误的——当我想要的结果是 1 个警报说 (10-12) 和下一个说 (5-10) 或更好的时候,下面的示例警报“(10-12) foo (5-10) bar”如果可能的话,那些没有括号的值。

感谢任何帮助。

var string = "foo bar (10-12) foo (5-10) bar";
var pattern = /\(.+\)/gi;
matches = string.match(pattern);

for (var i in matches) {
alert(matches[i]);
}

最佳答案

通过在 + 之后添加 ? 使您的量词变得惰性。否则,它会尽可能地贪婪地消费,从你开始的()到最后的)字符串。

var string = "foo bar (10-12) foo (5-10) bar",
pattern = /\(.+?\)/g,
matches = string.match(pattern);

jsFiddle .

如果您不想在匹配中包含括号,通常您会对括号使用正向先行和后向查找。 JavaScript 不支持后视(尽管您可以伪造它们)。所以,使用...

var string = "foo bar (10-12) foo (5-10) bar",
pattern = /\((.+?)\)/g,
match,
matches = [];

while (match = pattern.exec(string)) {
matches.push(match[1]);
}

jsFiddle .

还有...

  • 您的正则表达式中不需要 i 标志;你没有匹配任何字母。
  • 您应该始终使用var 来限定变量的范围。在您的示例中,匹配 将是全局的。
  • 您不应该使用 for (in) 来遍历数组。您还应该检查 match() 是否不返回 null(如果未找到结果)。

关于javascript - 用于匹配括号中的值的正则表达式/Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380056/

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