Quale variante di regex utilizza questo strumento?+−
Il motore regex nativo di JavaScript (quello dietro RegExp e String.prototype.match/replace), poiché tutto qui viene eseguito lato client nel tuo browser anziché su un server. È molto simile a PCRE ma presenta alcune differenze - ad esempio, il supporto per il lookbehind dipende dalla versione del motore, e i gruppi con nome usano la sintassi (?<nome>...).
Perché il mio pattern corrisponde solo una volta?+−
Per impostazione predefinita, senza il flag g (globale), una regex si ferma dopo la prima corrispondenza - questo rispecchia il comportamento reale di RegExp.exec() e String.match() in JavaScript. Attiva il flag g sopra per trovare tutte le corrispondenze nel testo di prova invece della sola prima.
Qual è la differenza tra (...) e (?:...)?+−
Entrambi raggruppano parti di un pattern, ma solo (...) - un gruppo di cattura - salva ciò che ha trovato così da poterlo referenziare in seguito (come $1, $2, ... in una sostituzione, o nell'elenco dei gruppi della corrispondenza). (?:...) è un gruppo senza cattura: raggruppa e applica i quantificatori senza conservare la corrispondenza, utile quando serve raggruppare senza interessarsi al testo catturato.
Come funzionano i gruppi con nome e le sostituzioni $<nome>?+−
Scrivi (?<nome>...) invece di (...) per catturare un gruppo con un nome invece di un semplice numero. In modalità Sostituisci, fai riferimento ad esso nel testo di sostituzione come $<nome> - ad esempio, (?<anno>\d{4})-(?<mese>\d{2}) sostituito con $<mese>/$<anno> riordina una data senza dover ricordare i numeri dei gruppi.
Qual è la differenza tra un quantificatore avido (greedy) e uno pigro (lazy), come + rispetto a +??+−
Un quantificatore avido (+, *, {2,4}) trova la corrispondenza più lunga possibile, per poi ridurla solo se necessario a far combaciare il resto del pattern. Un quantificatore pigro - lo stesso simbolo seguito da ? - trova invece la corrispondenza più corta possibile, espandendosi di un carattere alla volta solo quando serve. Ad esempio, <.+> contro <a><b> combacia avidamente con l'intero <a><b>, mentre <.+?> combacia pigramente solo con <a>.
Cosa verificano davvero lookahead e lookbehind, se non consumano alcun carattere?+−
Verificano se un pattern compare subito prima o dopo la posizione corrente senza includerlo nella corrispondenza stessa - quindi (?=...) e (?<=...) verificano in avanti/indietro che qualcosa debba esserci, mentre (?!...) e (?<!...) verificano che non debba esserci. Per questo puoi usare \d+(?=px) per far combaciare un numero solo quando è seguito da 'px', mentre 'px' stesso non compare mai nel testo corrisposto.