gpt4 book ai didi

javascript - js - match() 未正确返回值

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

我是正则表达式的初学者。虽然我用了https://www.regex101.com/r/nD8qB4/2检查我的正则表达式,match() 没有返回我想要的值。

js:

"[ls]Something[/ls]".match(/\[ls\](.*?)\[\/ls\]/g)[0];

输出:

[ls]Something[/ls]

我想要什么:

Something

我的问题出在哪里?这是一个jsfiddle:http://jsfiddle.net/6b7a2z8d/

最佳答案

您的问题是由使用 g 修饰符引起的。

它禁用捕获组的使用。

所以你需要:

  1. 删除g
  2. 改为访问[1]索引

它返回 2 个值,因为:

  • 索引值 0 是整个正则表达式捕获的总匹配
  • 1..N 每个捕获组匹配

在您的情况下,可能只能获得一场比赛:

(?<=\[ls]).*?(?=\[\/ls])

与正则表达式相比的主要区别:

  1. 中间部分没有专用的捕获组(因为我们不需要它)
  2. 前置和后置断言被替换为特殊的正则表达式断言语法,这意味着“前面的文本”和“后面的文本”。正如其名称所示,它们仅断言某些约束,但不形成新的匹配。

重要:正如下面的评论中所指出的,提议的解决方案不适用于 JS,因为其正则表达式实现不支持后向断言。

关于javascript - js - match() 未正确返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981958/

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