regex - AS3 : RegExp exec method in loop problem

标签 regex actionscript-3 loops

我需要一些有关 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/

相关文章:

python - 如何让我的 while 循环在 Python 中工作?

sql - 检查sql server 2005中某列中是否存在某个值

python - 如何创建一个可以迭代数组中的项目中任意数量的函数的函数?

python - 模糊搜索Python

regex - 正则表达式中反斜杠后跟重音符号是什么意思?

flash - 如何告诉 DataProvider 更新?

flash - flash-integration.swc 的用途是什么?

ruby - 部分正则表达式匹配

javascript - 如何使用正则表达式和 javascript 将模式替换为 span 元素?

ios - Adobe Air 应用程序在 iOS 启动画面后自动崩溃