我想在下面的代码中动态创建正则表达式,通过计算我需要检测的排列,然后像连接字符串一样创建正则表达式,但无论我尝试什么都失败。
我发现如果你跟踪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
答案 0 :(得分:2)
你需要删除第一个正斜杠(因为它只是为了启动一个你现在没有正在构建字符串的RexEx文字),转义反斜杠(因为你正在创建一个字符串文字) ,并将正则表达式标志移动到RexEx构造函数的第二个参数:
var regex1:RegExp = new RegExp("\\b(" + permutationsString + ")\\b","/g");
这应该做你想做的事。