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]
索引- 值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