我想在 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");
然后这应该会执行您想要的操作。
我想在下面的代码中动态创建正则表达式,方法是计算出我需要检测的排列,然后像连接字符串一样创建正则表达式,但无论我尝试什么都失败了。
我发现如果你跟踪 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");
然后这应该会执行您想要的操作。