AS3 RegEx返回null

sha*_*hat 1 regex flash actionscript-3

任何人都可以解释为什么下面的代码在时间轴上跟踪null?

var cleanRegExp:RegExp = /^[a-zA-Z0-9]+(\b|\/)/;
var str:String = "/num83r5/and/letters/4/A/";
trace(str.match(cleanRegExp.toString()));
Run Code Online (Sandbox Code Playgroud)

我已经阅读了文档,所以我很确定我正确地声明了RegEx,并且String.match()只应在没有传入模式时返回null,否则它应该是一个包含0+元素的数组.我怀疑一个写得不好的表达,但肯定还应该返回一个空数组?

编辑:这两个跟踪"无匹配"而不是5或0,具体取决于表达式是否正确:

var cleanRegExp:RegExp = /^[a-zA-Z0-9]+(\b|\/)/;
var str:String = "/num83r5/and/letters/4/A/";
var res:Array = str.match(cleanRegExp);
trace((res == null) ? "no matches" : res.length);
Run Code Online (Sandbox Code Playgroud)

和:

var cleanRegExp:RegExp = /^[a-zA-Z0-9]+(\b|\/)/;
var str:String = "/num83r5/and/letters/4/A/";
var res:Object = cleanRegExp.exec(str);
trace((res == null) ? "no matches" : res[0]);
Run Code Online (Sandbox Code Playgroud)

小智 5

UPDATE

如果你打算使用正则表达式在flash中工作,这个工具是必须的:

http://gskinner.com/RegExr/
http://gskinner.com/RegExr/desktop/

原始答案

不要使用toString(),然后进行文字搜索,其中包括添加所有正则表达式格式,包括标志.做:

str.match(cleanRegExp);
Run Code Online (Sandbox Code Playgroud)

实际上正确的方法是引用返回的对象,如下所示:

var results:Array = str.match(cleanRegExp);

if(results != null){
     //We have a match!
}
Run Code Online (Sandbox Code Playgroud)