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

Javascript js-match()未正确返回值,javascript,regex,Javascript,Regex,我是正则表达式的初学者。尽管我过去经常检查我的正则表达式,match()并没有按照我的要求返回值 js: "[ls]Something[/ls]".match(/\[ls\](.*?)\[\/ls\]/g)[0]; Something 输出: [ls]Something[/ls] 我想要什么: "[ls]Something[/ls]".match(/\[ls\](.*?)\[\/ls\]/g)[0]; Something 我的问题在哪里?这里有一个jsfiddle:您的问题是由使用g修

我是正则表达式的初学者。尽管我过去经常检查我的正则表达式,
match()
并没有按照我的要求返回值

js:

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

[ls]Something[/ls]
我想要什么:

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

我的问题在哪里?这里有一个jsfiddle:

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

它禁用使用捕获组

因此,您需要:

  • 删除
    g
  • 改为访问
    [1]
    索引
  • 它返回2个值,因为:

    • 值indexed
      0
      是整个正则表达式捕获的总匹配项
    • 1..N
      每个捕获组匹配
    在您的情况下,只能获得一个匹配项:

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

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

    它禁用使用捕获组

    因此,您需要:

  • 删除
    g
  • 改为访问
    [1]
    索引
  • 它返回2个值,因为:

    • 值indexed
      0
      是整个正则表达式捕获的总匹配项
    • 1..N
      每个捕获组匹配
    在您的情况下,只能获得一个匹配项:

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

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

    它禁用使用捕获组

    因此,您需要:

  • 删除
    g
  • 改为访问
    [1]
    索引
  • 它返回2个值,因为:

    • 值indexed
      0
      是整个正则表达式捕获的总匹配项
    • 1..N
      每个捕获组匹配
    在您的情况下,只能获得一个匹配项:

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

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

    它禁用使用捕获组

    因此,您需要:

  • 删除
    g
  • 改为访问
    [1]
    索引
  • 它返回2个值,因为:

    • 值indexed
      0
      是整个正则表达式捕获的总匹配项
    • 1..N
      每个捕获组匹配
    在您的情况下,只能获得一个匹配项:

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


    (?我会很快接受你的答案!但为什么它返回2个值?有没有办法让它只返回1?@DanielCheung yep是的。添加了它并explained@zerkms您是否使用js尝试过lookbehind解决方案?:Pun幸运的是,javascript不支持lookbehinds。@Jonny5我在regex101上尝试过,希望它使用js引擎:-SI将接受您的ans哇,太快了!但为什么它只返回2个值?有没有办法让它只返回1个值?@DanielCheung yep,是的。添加了它并explained@zerkms您是否使用js尝试过lookbehind解决方案?:Pun幸运的是,javascript不支持lookbehinds。@Jonny5我在regex101上尝试过,希望它使用js引擎:-我会很快接受您的答案!但是为什么它是否返回2个值?有没有办法让它只返回1个值?@DanielCheung yep是的。添加了它并explained@zerkms您是否使用js尝试过lookbehind解决方案?:Pun幸运的是,javascript不支持lookbehinds。@Jonny5我在regex101上尝试过,希望它使用js引擎:-我会很快接受您的答案!但为什么它返回2值是吗?有办法让它只返回1吗?@DanielCheung yep是的。添加了它并explained@zerkms您是否使用js尝试过lookbehind解决方案?:Pun幸运的是,javascript不支持lookbehinds。@Jonny5我在regex101上尝试过,希望它使用js引擎:-S