Qual variante de regex isso usa?+−
O mecanismo de regex nativo do JavaScript (aquele por trás de RegExp e String.prototype.match/replace), já que tudo aqui roda do lado do cliente no seu navegador em vez de em um servidor. É muito próximo do PCRE, mas tem algumas diferenças - por exemplo, o suporte a lookbehind depende da versão do mecanismo, e grupos nomeados usam a sintaxe (?<nome>...).
Por que meu padrão corresponde apenas uma vez?+−
Por padrão, sem o sinalizador g (global), uma regex para após sua primeira correspondência - isso reflete como RegExp.exec() e String.match() realmente se comportam em JavaScript. Ative o sinalizador g acima para encontrar todas as correspondências no texto de teste em vez de apenas a primeira.
Qual é a diferença entre (...) e (?:...)?+−
Ambos agrupam partes de um padrão, mas apenas (...) - um grupo de captura - salva o que correspondeu para que você possa referenciá-lo depois (como $1, $2, ... em uma substituição, ou na lista de grupos da correspondência). (?:...) é um grupo sem captura: agrupa e aplica quantificadores sem manter a correspondência, útil quando você precisa agrupar mas não se importa com o texto capturado.
Como funcionam os grupos nomeados e as substituições $<nome>?+−
Escreva (?<nome>...) em vez de (...) para capturar um grupo com um nome em vez de apenas um número. No modo Substituir, referencie-o no texto de substituição como $<nome> - por exemplo, (?<ano>\d{4})-(?<mes>\d{2}) substituído por $<mes>/$<ano> reorganiza uma data sem precisar lembrar os números dos grupos.
Qual é a diferença entre um quantificador guloso (greedy) e um preguiçoso (lazy), como + versus +??+−
Um quantificador guloso (+, *, {2,4}) corresponde ao máximo possível e só recua se necessário para que o restante do padrão combine. Um quantificador preguiçoso - o mesmo símbolo seguido de ? - corresponde ao mínimo possível, expandindo um caractere por vez apenas quando necessário. Por exemplo, <.+> contra <a><b> corresponde gulosamente a todo <a><b>, enquanto <.+?> corresponde preguiçosamente apenas a <a>.
O que lookahead e lookbehind realmente verificam, se não consomem nenhum caractere?+−
Eles verificam se um padrão aparece logo antes ou depois da posição atual sem incluí-lo na própria correspondência - assim, (?=...) e (?<=...) verificam à frente/atrás que algo deve estar presente, enquanto (?!...) e (?<!...) verificam que não deve estar presente. É por isso que você pode usar \d+(?=px) para corresponder a um número apenas quando seguido de 'px', embora 'px' em si nunca apareça no texto correspondido.