Regex per commenti nelle stringhe, stringhe nei commenti, ecc

Questa è una domanda che ho risolto e che volevo pubblicare in Q & A style perché penso che più persone potrebbero utilizzare la soluzione. O forse migliorare la soluzione, mostrare dove si rompe.

Il problema

Vuoi fare qualcosa con stringhe e / o commenti citati in un corpo di testo. Vuoi estrarli, evidenziarli, cos’hai. Ma alcune stringhe tra virgolette sono all’interno dei commenti e, a volte, i caratteri di commento sono all’interno delle stringhe. E i delimitatori delle stringhe possono essere sfuggiti e i commenti possono essere commenti di riga o commenti di blocco. E quando pensavi di avere una soluzione qualcuno si lamenta che non funziona quando c’è un regex letterale nel suo JavaScript. Cosa fare?

Esempio concreto

var ret = row.match(/'([^']+)'/i); // Get 1st single quoted string's content if (!ret) return ''; /* return if there's no matches Otherwise turn into xml: */ var message = '\t'; alert('xml: \'' + message + '\''); /* alert("xml: '" + message + "'"); // */ var line = prompt('How do line-comments start? (eg //)', '//'); // do something with line 

Questo codice non ha senso, ma come faccio a fare la cosa giusta in ognuno dei casi del suddetto JavaScript?

L’unica cosa che ho trovato che si avvicina è questa: commenti in stringa e stringhe nei commenti in cui Jan Goyvaerts stesso ha risposto con un approccio simile. Ma quello non gestisce l’apostrofo, ma è ancora in fuga.