Я действительно писал об этом в блоге, поэтому я просто укажу вам: http://tyleregeto.com/using-vars-in-regular-expressions-as3 В нем говорится о возможных решениях, но нет идеального, как вы упомянули.
РЕДАКТИРОВАТЬ
Вот копия важных частей этой записи в блоге:
Вот регулярное выражение для удаления тегов из блока текста.
/<("[^"]*"|'[^']*'|[^'">])*>/ig
Это изящное выражение работает как шарм.Но я хотел обновить его, чтобы разработчик мог ограничить, какие теги он удаляет, указанными в массиве.Довольно простые вещи: чтобы использовать значение переменной в регулярном выражении, сначала нужно построить его как строку, а затем преобразовать.Что-то вроде следующего:
var exp:String = 'start-exp' + someVar + 'more-exp';
var regex:Regexp = new RegExp(exp);
Довольно прямо.Так что, приближаясь к этому небольшому обновлению, я так и сделал.Конечно, одна большая проблема была довольно ясна.
var exp:String = '/<' + tag + '("[^"]*"|'[^']*'|[^'">])*>/';
Угадайте, что, недопустимая строка!Лучше избегать этих кавычек в строке.Упс, это сломает регулярное выражение!Я был в тупике.Поэтому я открыл справочник по языку, чтобы посмотреть, что я смог найти.Параметр «source» (который я никогда раньше не использовал) попался на глаза.Возвращает строку, описанную как «часть шаблона регулярного выражения».Это отлично сработало.Вот решение:
var start:Regexp = /])*>/ig;
var complete:RegExp = new RegExp(start.source + tag + end.source);
Вы можете уменьшить его до этого для удобства:
var complete:RegExp = new RegExp(/])*>/.source + tag, 'ig');