Convierta la expresión regular de Perl a una expresión regular ECMAScript equivalente

Ahora estoy usando VC ++ 2010, pero elsyntax_option_type de VC ++ 2010 solo contiene las siguientes opciones:

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;

No contiene perl_syntax_group (Boost Library tiene la opción).Sin embargo, no quiero usar la biblioteca Boost.

Hay muchas expresiones regulares escritas en Perl, así que quiero convertir las expresiones regulares de Perl existentes aECMAScript(o cualquiera que sea compatible con VC ++ 2010). Después de la conversión, puedo usar las expresiones regulares equivalentes directamente en VC ++ 2010 sin usar la biblioteca de terceros.

Un ejemplo:

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");

En el ejemplo anterior, lo que quiero hacer es convertire yformat aECMAScript expresiones de estilo.

¿Es posible encontrar una forma general de convertir todas las expresiones regulares de Perl aECMAScript ¿estilo? ¿Hay algunas herramientas para hacer esto?

Cualquier ayuda será apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta