我想在下面的代码中动态地创建正则表达式,通过计算我需要检测到的排列,然后像连接一个字符串一样创建正则表达式,但是不管我尝试了什么,它都失败了。
我发现,如果您跟踪testRX.source,您可以看到没有转义字符的regexp (这就是我所相信的)。
理想情况下,我想这样做
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。
提前谢谢。
金格曼
发布于 2015-07-09 20:30:35
您需要删除第一个正斜杠(因为这只是为了启动一个RexEx文本,而现在您正在构建一个字符串),转义反斜杠(因为您正在创建字符串文本),并将regex标志移动到RexEx构造函数的第二个参数中:
var regex1:RegExp = new RegExp("\\b(" + permutationsString + ")\\b","/g");这样就可以做你想做的事了。
https://stackoverflow.com/questions/31327344
复制相似问题