当前位置:  开发笔记 > 编程语言 > 正文

AS3:循环问题中的RegExp exec方法

如何解决《AS3:循环问题中的RegExpexec方法》经验,为你挑选了1个好方法。

我需要一些关于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时,它完美地运作.Flash回复我:v/J-vCxmjCm-8,J-vCxmjCm-8

当i == 1时,它失败了.Flash回复我:null

当我恢复我的数组中的两个字符串时,例如:

toto = [ http://www.youtube.com/v/xFTRnE1WBmU&autoplay=1, http://www.youtube.com/v/J-vCxmjCm-8&autoplay=1 ];

当i == 0时,它完美运行:Flash返回我: xFTRnE1WBmU

当i == 1时,它失败:Flash返回给我: null

你对循环中的问题有什么想法吗?



1> bobince..:

这就是g快速RegExps在JavaScript/ActionScript中所做的事情.你exec有一次,你得到第一场比赛,exec他们再次得到第二场比赛.使用gRegExp,您必须再次调用它,直到您完成所有匹配.然后你会得到null,搜索将重置为字符串的开头.

这是一个奇怪的界面,但这就是我们所坚持的.如果您不想要此行为,请忽略构造函数中的'g'标志new RegExp.那么每次你只会得到第一场比赛.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有