我想在 AS3 中动态构造一个正则表达式模式

I would like to dynamically construct a regex pattern in AS3

我想在下面的代码中动态创建正则表达式,方法是计算出我需要检测的排列,然后像连接字符串一样创建正则表达式,但无论我尝试什么都失败了。

我发现如果你跟踪 testRX.source,你可以看到没有转义字符的正则表达式(反正我是这么认为的)。

理想情况下我想这样做

var permutationsString:String = "abc|acb|bac|bca|cab|cba";
var regex1:RegExp = "/\b("+permutationsString+")\b/g";
regex1.test( "whatever" );

但是没用。

下面是工作代码

var testRX:RegExp = /\b(abc|acb|bac|bca|cab|cba)\b/g;

var regex:RegExp = new RegExp( testRX );

trace( "regex.test = " + regex.test( "333" )); // false

trace( "regex.test = " + regex.test( "abc" )); // true

trace( "regex.test = " + regex.test( "ca"  )); // false

trace( "regex.test = " + regex.test( "bbb" )); // false

trace( "regex.test = " + regex.test( "abce")); // false

这是 Actionscript 3。

提前致谢。

姜人

您需要删除第一个正斜杠(因为这只是为了开始一个 RexEx 文字,而您现在正在构建一个字符串而没有这样做),转义反斜杠(因为您正在创建一个字符串文字),并将正则表达式标志移动到 RexEx 构造函数的第二个参数中:

var regex1:RegExp = new RegExp("\b(" + permutationsString + ")\b","/g");

然后这应该会执行您想要的操作。