Я думаю, что самый простой способ выполнить то, что вам нужно, это использовать функцию в выражении replace ().
var replaceMethod:Function = function (match:String, tagName:String, tagContent:String, spaces:String, targetText:String, index:int, whole:String) : String
{
trace("\t", "found", spaces.length,"spaces in tag '"+tagName+"'");
trace("\t", "matched string:", match);
// check tag name or whatever you may want
// do something with found spaces
var replacement:String = spaces.replace(" ", "*");
return "<"+tagName+" "+tagContent+">"+replacement+targetText;
}
var str1:String = '<value1 att="1"> some text</value1>';
var exp:RegExp = /<(\w+)([ >].*?)>(\s+)(some text)/gm;
trace("before:", str1);
str1 = str1.replace(exp, replaceMethod);
trace("after:", str1);
Хотя это не безопасно для производительности;Если вы используете огромные блоки текста и / или запускаете эту процедуру очень часто, вы можете захотеть сделать что-то более сложное, но оптимизированное.Одним из методов оптимизации является уменьшение количества аргументов replaceMathod ().
ps. Я думаю, что это можно сделать с помощью одного выражения replace () и без использования replaceMethod ().Посмотрите на позитивные взгляды и группы, не занимающиеся захватом, может быть, вы можете понять это.http://livedocs.adobe.com/flex/3/html/help.html?content=12_Using_Regular_Expressions_09.html