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

时间:2015-07-09 20:14:43

标签: regex actionscript-3 flash dynamic

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

我发现如果你跟踪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。

提前致谢。

gingerman

1 个答案:

答案 0 :(得分:2)

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

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

这应该做你想做的事。