Converter expressão regular Perl para expressão regular ECMAScript equivalente

Agora estou usando o VC ++ 2010, mas osyntax_option_type do VC ++ 2010 contém apenas as seguintes opções:

static const flag_type icase = regex_constants::icase;
static const flag_type nosubs = regex_constants::nosubs;
static const flag_type optimize = regex_constants::optimize;
static const flag_type collate = regex_constants::collate;
static const flag_type ECMAScript = regex_constants::ECMAScript;
static const flag_type basic = regex_constants::basic;
static const flag_type extended = regex_constants::extended;
static const flag_type awk = regex_constants::awk;
static const flag_type grep = regex_constants::grep;
static const flag_type egrep = regex_constants::egrep;

Não contém perl_syntax_group (a biblioteca Boost tem a opção).No entanto, não quero usar a Biblioteca de Boost.

Há muitas expressões regulares escritas em Perl, então eu quero converter as expressões regulares Perl existentes paraECMAScript(ou qualquer um que suporte o VC ++ 2010). Após a conversão, posso usar as expressões regulares equivalentes diretamente no VC ++ 2010 sem usar a biblioteca de terceiros.

Um exemplo:

const boost::tregex e(__T("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z"));
const CString human_format = __T("$1-$2-$3-$4");
CString human_readable_card_number(const CString& s)
{
   return boost::regex_replace(s, e, human_format);
}
CString credit_card_number = "1234567887654321";
credit_card_number = human_readable_card_number(credit_card_number);
assert(credit_card_number == "1234-5678-8765-4321");

No exemplo acima, o que eu quero fazer é convertere eformat paraECMAScript expressões de estilo.

É possível encontrar uma maneira geral de converter todas as expressões regulares Perl paraECMAScript estilo? Existem algumas ferramentas para fazer isso?

Qualquer ajuda será apreciada!

questionAnswers(1)

yourAnswerToTheQuestion