Bou*_*oun 4 regex loops actionscript-3
我需要一些关于AS3中RegExp的帮助.
我有一个简单的模式:
patternYouTube = new RegExp ( "v(?:\/|=)([A-Z0-9_-]+)", "gi" );
Run Code Online (Sandbox Code Playgroud)
此模式正在寻找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);
}
}
Run Code Online (Sandbox Code Playgroud)
当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 ];
Run Code Online (Sandbox Code Playgroud)
当i == 0时,它完美运行:Flash返回我: xFTRnE1WBmU
当i == 1时,它失败:Flash返回给我: null
你对循环中的问题有什么想法吗?
这就是g快速RegExps在JavaScript/ActionScript中所做的事情.你exec有一次,你得到第一场比赛,exec他们再次得到第二场比赛.使用gRegExp,您必须再次调用它,直到您完成所有匹配.然后你会得到null,搜索将重置为字符串的开头.
这是一个奇怪的界面,但这就是我们所坚持的.如果您不想要此行为,请忽略构造函数中的'g'标志new RegExp.那么每次你只会得到第一场比赛.
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |