gpt4 book ai didi

regex - AS3 : RegExp exec method in loop problem

转载 作者:行者123 更新时间:2023-12-04 23:33:02 24 4
gpt4 key购买 nike

我需要一些有关 AS3 中 RegExp 的帮助。

我有一个简单的模式:

patternYouTube = new RegExp ( "v(?:\/|=)([A-Z0-9_-]+)", "gi" );

此模式正在寻找 YouTube id 视频。

例如 :
var tmpUrl : String;    
var result : Object;
var toto : Array = new Array();
toto = ["http://www.youtube.com/v/J-vCxmjCm-8&autoplay=1", "http://www.youtube.com/v/xFTRnE1WBmU&autoplay=1"];
var i : uint;

for ( i = 0 ; i < toto.length ; i++)
{
tmpUrl = toto[i];
result = patternYouTube.exec ( tmpUrl );
if ( result.length != 0 && result != null )
{
trace(result);
}
}

当 i == 0 时,它完美地工作。
闪回我: v/J-vCxmjCm-8,J-vCxmjCm-8
当 i == 1 时,它失败。
闪回我: null
当我恢复数组中的两个字符串时,例如:
toto = [ http://www.youtube.com/v/xFTRnE1WBmU&autoplay=1, http://www.youtube.com/v/J-vCxmjCm-8&autoplay=1 ];

当 i == 0 时,它完美运行:
闪回我: xFTRnE1WBmU
当 i == 1 时,它失败:
闪回我: null
你对循环中的问题有什么想法吗?

最佳答案

就是这样g局部正则表达式在 JavaScript/ActionScript 中执行。您exec他们一次,你得到第一场比赛,exec他们再次获得第二场比赛。带 g RegExp 您必须再次调用它,直到您完成所有匹配项。然后你会得到null并且搜索将重置为字符串的开头。

这是一个奇怪的界面,但这就是我们所坚持的。如果您不想要这种行为,请省略 'g'来自 new RegExp 的旗帜构造函数。那么你每次只会得到第一场比赛。

关于regex - AS3 : RegExp exec method in loop problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455867/

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